尝试在熊猫的read_csv
文件中使用达斯克的read_csv
dd.read_csv('data/ecommerce-new.csv')
失败,但有以下错误:
pandas.errors.ParserError: Error tokenizing data. C error: EOF inside string starting at line 2
该文件是使用scrapy的csv文件,其中有两列,一列带有url,另一列带有html(使用"
作为分隔符char存储多行)。实际上,被熊猫解析意味着它的格式应该很好。
html,url
https://google.com,"<a href=""link"">
</a>"
使sample
参数大到足以在内存中加载整个文件似乎是可行的,这使我相信当试图推断数据类型时,它实际上失败了(还有这个问题应该已经解决了,https://github.com/dask/dask/issues/1284)
以前有人遇到过这个问题吗?有解决办法吗?
编辑:显然,如果文件在引号之间包含一个换行符,那么这显然是dask的read_csv中的一个已知问题。我找到了一个解决方案,就是把它全部读入记忆中:
dd.from_pandas(pd.read_csv(input_file), chunksize=25)
这是可行的,但代价是并行性。还有其他解决办法吗?
发布于 2020-01-29 10:24:19
对于2020年来到这里的人来说,dd.read_csv
直接为引号内的新行工作。已经修好了。更新到Dask的最新版本(2.18.1
和更高版本)以获得这些好处。
import dask.dataframe as dd
df = dd.read_csv('path_to_your_file.csv')
print(df.compute())
给予,
html url
0 https://google.com <a href="link">\n</a>
或
对于出于某种原因想要使用旧版本的人,如@mdurant所建议的,您可能希望将blocksize=None
传递给dd.read_csv
,这将以并行加载为代价。
https://stackoverflow.com/questions/45752805
复制相似问题