Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 字符串排序csv行_Python_String_Csv_Pandas - Fatal编程技术网

Python 字符串排序csv行

Python 字符串排序csv行,python,string,csv,pandas,Python,String,Csv,Pandas,CSV文件中的输出为 格拉德科尔 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' fi

CSV文件中的输出为

格拉德科尔

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')
如果数据帧行中有此字符串,则希望只有“PPVI STA=209+126.315”,其他行的EVCS和BVCS保持不变,每行的数字部分可能不同。
使用extract方法在与不匹配的行中获取NaN值,这不是目的。

这应该可以完成这项工作

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
IIUC:

样本DF:

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

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

    return string[start : end]
解决方案:

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

你期望的输出是什么?您想对所有行进行排序吗?
“info\GPK HEK=209+126.315\info结束于此”
-是整个字符串/行还是行中的一列?大家好,希望上面的编辑和更多信息有助于澄清预期的输出。欢迎访问该网站:您可能想阅读,并相应地重新回答您的问题。您好,MaxU,请查看新编辑的信息。
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