繁体   English   中英

熊猫read_csv错误地读取了sep = None的列数

[英]pandas read_csv incorrectly reading number of columns with sep=None

我有以下单列CSV文件:

id
1
2
3

当我使用pandas.read_csv('path/to/csv')读取pandas.read_csv('path/to/csv')它可以正确读取它。

但是,要求表明我必须接受多个定界符,因此我的现有代码使用sep=None

读取上述CSV时, pandas.read_csv('path/to/csv', sep=None)会产生ValueError: Expected 2 fields in line 2, saw 1 显然,它错误地标识了分隔符并期望有两列。

谁能提出解决此问题的方法,让我继续接受多个定界符,但也能正确处理上述CSV? 使用正则表达式定界符(例如sep=';|,'是不可接受的,因为它会导致大熊猫忽略引号。

这是我们最终可以找到的最佳解决方案:

data = csv_file.decode(chardet.detect(csv_file)['encoding'])
dialect = csv.Sniffer().sniff(StringIO(data).readline())
if dialect.delimiter.isalnum():
    dialect.delimiter = ','  
pd.read_csv(StringIO(data), dialect=dialect)

理由是,如果Sniffer无法检测的分隔符,它是一个单行CSV和分隔符设置,使得它能够被读取。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM