Pandas read_csv 仅第一个逗号

ira*_*v94 3 python csv string multiple-columns pandas

我有一个 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
Run Code Online (Sandbox Code Playgroud)

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

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

预先非常感谢您的帮助,

Dee*_*ace 9

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

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

测试.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
Run Code Online (Sandbox Code Playgroud)

然后

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

输出

         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
Run Code Online (Sandbox Code Playgroud)

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