2017-07-15 78 views
1
import pandas as pd 

rawDF = pd.read_csv('D:\Project\python\Grade\GradeDataRaw.csv',names=['GradeCol']) 

filteredDF = rawDF[rawDF['GradeCol'].str.contains('EVCS:|BVCS:|LOW POINT STA')] 
print(filteredDF) 

filename = 'GradeOut.csv' 

filteredDF.to_csv(filename,index=False, encoding='utf-8') 

輸出在CSV文件是字符串排序CSV行

GradeCol

EVCS: 210+080.907 

BVCS: 210+080.907 

LOW POINT STA =208+108.133\PLOW POINT ELEV = 66.849\PPVI STA = 209+126.315\PPVI ELEV = 66.762\PA.D = 1.413%\PK 

LOW POINT STA =208+108.133\PLOW POINT ELEV = 66.849\PPVI STA = 209+126.000\PPVI ELEV = 66.762\PA.D = 1.413%\PK 

想僅具有 「PPVI STA = 209 + 126.315」 在數據幀的行,其中有可用的此串,其他行EVCS & BVCS保持不變,數字部分可以在每行中變化。 使用提取方法在不匹配的行中獲取NaN值,這不是目的。

+0

什麼是你想要的輸出?你想訂購所有的行嗎? – Kelvin

+0

'「info \ GPK HEK = 209 + 126.315 \ info在這裏結束」 - 是整行/行還是行中的一列? – MaxU

+0

你好,希望上面的編輯更多的信息有助於澄清預期的產出。 – Dagdoba

回答

1

IIUC:

樣品DF:

In [99]: df 
Out[99]: 
               txt 
0   info \GPK HEK = 209+126.315\info ends here 
1 blah-blah-blah GPK HEK = 1 + 2.33333end of string 

解決方案:

In [100]: df['txt'].str.extract(r'(GPK HEK\s*=\s*\d+\s*\+\s*\d+\.\d+)', expand=False) 
Out[100]: 
0 GPK HEK = 209+126.315 
1 GPK HEK = 1 + 2.33333 
Name: txt, dtype: object 
+0

hello MaxU,請看看新編輯的信息。 – Dagdoba

0

這應該做的工作。

def parse(string): 
    start = string.find('\\') + 1 
    end = string.find('.') 

    while string[end] != '\\': 
     end += 1 

    return string[start : end] 
+0

謝謝你,但是使用DataFrame – Dagdoba