2017-07-15 1 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行

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

こんにちは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