Dask read_csv折叠列,而pandas read_csv不折叠

时间:2019-07-19 18:44:22

标签: python pandas csv dataframe dask

我无法从多个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)

我对问题出在哪里感到困惑。任何建议都将不胜感激。谢谢。

0 个答案:

没有答案