【问题标题】:Pandas read_csv only first comma熊猫 read_csv 只有第一个逗号
【发布时间】:2019-06-27 11:59:36
【问题描述】:

我有一个如下所示的 csv 数据库:

Date,String
2010-12-31,'This, is, an example string'
2011-12-31,"This is an, example string"
2012-12-31,This is an example, string

我正在尝试使用 pandas,因为我相信它是处理这种情况的最广泛的库之一。有没有办法使用read_csv 函数创建一个仅考虑第一个逗号的DataFrame? (不管后面的字符串有 "" 或 '' 或没有任何东西来隔离它)。

如果没有,最有效的替代方法是什么?

非常感谢您的任何帮助,

【问题讨论】:

    标签: python string pandas csv multiple-columns


    【解决方案1】:

    您可以通过为read_csvsep 参数传递正则表达式来作弊。我使用的正则表达式是^([^,]+),,它抓住了第一个逗号。我还使用了engine 参数来避免pandas 警告(因为默认的C 引擎不支持正则表达式sep)和usecols 参数来确保我们只得到我们想要的列(没有它我们也会得到一个“未命名”的专栏,我不知道为什么要诚实)。

    您可以在read_csv docs 中获取有关每个参数的更多信息。

    test.csv

    Date,String
    2010-12-31,'This, is, an example string'
    2011-12-31,"This is an, example string"
    2012-12-31,This is an example, string
    

    然后

    print(pd.read_csv('test.csv', sep='^([^,]+),', engine='python', usecols=['Date', 'String']))
    

    输出

             Date                         String
    0  2010-12-31  'This, is, an example string'
    1  2011-12-31   "This is an, example string"
    2  2012-12-31     This is an example, string
    

    如果 CSV 文件中有超过 2 个“实际”列,这将不起作用

    【讨论】:

      猜你喜欢
      • 2023-03-13
      • 1970-01-01
      • 2018-01-27
      • 2016-03-30
      • 2019-07-12
      • 2017-08-02
      • 1970-01-01
      • 2012-11-21
      • 2018-07-19
      相关资源
      最近更新 更多