我无法从多个CSV文件读取模糊的数据帧。我能够读入dask数据框,但结果似乎不符合我的期望。结果将所有列折叠为一个列。
我的csv文件每个大约20gb,并以utf-8格式保存。它最初是使用pandas to_csv函数(带有编码='utf-8-sig')生成的。
我认为问题的主要根源在于我拥有的数据集,但不幸的是,我不确定如何在此处制作可重复的示例。希望下面的插图可以帮助您了解问题所在。
我用下面的代码读取了dask数据框。
dfs_all = dd.read_csv('data/*.csv',
engine='python',
encoding='utf-8',
error_bad_lines=False,
)
我必须指定引擎,编码,error_bad_lines否则它会生成错误。 如果没有engine ='python',它将生成
pandas.errors.ParserError: Error tokenizing data. C error: EOF inside string starting at row 1005
它生成的W / O编码
UnicodeDecodeErtor: 'charmap' codec can't decode byte 0x8d in position 3051: character maps to <undefined>
w / o error_bad_lines =假,显示
pandas.errors.ParserError: unexpected end of data
dfs_all结果上方
Skipping line 1006: unexpected end of data
但是它仍然有效。但是,结果似乎已将所有列折叠为一个列。
dfs_all.shape
Out[4]: (Delayed('int-b880bc37-e65a-489b-b71c-314ec76f87a2'), 1)
我用一个带有read_csv熊猫的csv文件进行了测试,它可以正常工作。
df_pandas = pd.read_csv('data/outfile_09.csv', nrows=100)
# it works without specification above
df_pandas.shape()
Out[10]: (100, 9) # 9 columns
我测试了dask是否仍然无法读取文件,因此我进行了如下测试,并且dask毫无问题地读取了熊猫。
dd.from_pandas(df_pandas, chunksize=50).shape
Out[14]: (Delayed('int-0e7ac94b-c571-4204-a0fb-351d38a50130'), 9)
我对问题出在哪里感到困惑。任何建议都将不胜感激。谢谢。