首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读CSV有额外的逗号,没有与潘达商城?

读CSV有额外的逗号,没有与潘达商城?
EN

Stack Overflow用户
提问于 2017-06-27 17:28:16
回答 1查看 1.3K关注 0票数 2

数据:

代码语言:javascript
复制
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))

收到的错误:

代码语言:javascript
复制
pandas.io.common.CParserError: Error tokenizing data. C error: Expected 7 fields in line 3, saw 9

这是非常明显的原因,我收到这个错误。数据包含文本,如How often? (at home, at work, other)Do you prefer a, b, or c?

如何将这类数据读入熊猫DataFrame?

EN

回答 1

Stack Overflow用户

发布于 2017-06-27 17:28:16

当然,当我写这个问题的时候,我想明白了。与其删除它,我将与我未来的自我分享,当我忘记如何做这件事。

显然,熊猫默认的sep=','也可以是一个正则表达式。

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

代码语言:javascript
复制
df = pd.read_csv(StringIO(s), sep=r',(?!\s)')

(?!\s)部分是一个负前瞻,只匹配后面没有后续空格的逗号。

结果:

代码语言:javascript
复制
          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  
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44786415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档