【问题标题】:string sorting csv row字符串排序csv行
【发布时间】:2017-12-20 13:24:40
【问题描述】:
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 的行保持不变,每行的数字部分可能会有所不同。 使用 extract 方法在不匹配的行中获取 NaN 值,这不是意图。

【问题讨论】:

  • 你想要的输出是什么?你想订购所有的行吗?
  • "info \GPK HEK = 209+126.315\info ends here" - 是整个字符串/行还是行中的一列?
  • 大家好,希望以上包含更多信息的编辑有助于澄清预期的输出。
  • 欢迎访问该网站:您可能需要阅读help centerHow to Askminimal reproducible example,并相应地重新表述您的问题。

标签: python string csv pandas


【解决方案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

【讨论】:

  • 你好 MaxU,请看一下新编辑的信息。
【解决方案2】:

这应该可以完成工作。

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

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

    return string[start : end]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-14
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    相关资源
    最近更新 更多