gpt4 book ai didi

python - 使用 Pandas 读取带有额外逗号且没有 quotechar 的 CSV?

转载 作者:太空宇宙 更新时间:2023-11-03 15:04:24 25 4
gpt4 key购买 nike

数据:

from io import StringIO
import pandas as pd

s = '''ID,Level,QID,Text,ResponseID,responseText,date_key
375280046,S,D3M,Which is your favorite?,D5M0,option 1,2012-08-08 00:00:00
375280046,S,D3M,How often? (at home, at work, other),D3M0,Work,2010-03-31 00:00:00
375280046,M,A78,Do you prefer a, b, or c?,A78C,a,2010-03-31 00:00:00'''

df = pd.read_csv(StringIO(s))

收到错误:

pandas.io.common.CParserError: Error tokenizing data. C error: Expected 7 fields in line 3, saw 9

很明显我收到此错误的原因。数据包含诸如 How much? 之类的文本。 (在家、工作、其他)你更喜欢 a、b 还是 c?

如何将这种类型的数据读入 pandas DataFrame?

最佳答案

当然,当我写下这个问题时,我就明白了。当我忘记如何执行此操作时,我不会将其删除,而是与 future 的自己分享。

显然,pandas 默认的 sep=',' 也可以是正则表达式。

解决方案是将 sep=r',(?!\s)' 添加到 read_csv 中,如下所示:

df = pd.read_csv(StringIO(s), sep=r',(?!\s)')

(?!\s) 部分是否定前瞻,仅匹配后面没有空格的逗号。

结果:

          ID Level  QID                                  Text ResponseID  \
0 375280046 S D3M Which is your favorite? D5M0
1 375280046 S D3M How often? (at home, at work, other) D3M0
2 375280046 M A78 Do you prefer a, b, or c? A78C

responseText date_key
0 option 1 2012-08-08 00:00:00
1 Work 2010-03-31 00:00:00
2 a 2010-03-31 00:00:00

关于python - 使用 Pandas 读取带有额外逗号且没有 quotechar 的 CSV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44786415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com