使用Pandas和PyArrow引擎从一个巨大的CSV文件中读取单个列时出错

pbossiut  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(74)

我试图在Pandas中读取一个巨大CSV文件中的单个列,使用另一个question的答案:

import pandas as pd

test_df = pd.read_csv("test.csv", usecols=["id_str"], engine="pyarrow")

字符串
我得到这个错误:

pyarrow.lib.ArrowInvalid: CSV parse error: Expected 4 columns, got 3


使用一个小得多的文件,我可以读取它只使用pd.read_csv没有任何选项。
阅读周围似乎这个问题是有关的事实,CSV文件有空单元格,这是由NaN填充时,pd.read_csv使用没有选项,但他们在其他情况下创建的问题。
我还没有找到解决这个问题的方法,有什么建议吗?
我只想读一些列,因为这个文件真的很大,我只需要那些列来进行分析。

bprjcwpo

bprjcwpo1#

您的CSV文件已损坏。在文件的某个地方,您的逗号数量不正确......因此列数比pandas预期的要少。您无法使用(不同的)更小的文件,因为更小的数据(例如,只有前100行)格式正确-所以你的代码工作。在你的原始文件下面的某个地方,至少有一行看起来不像上面的行,这会导致错误(仅在原始文件上)。
这不是不是关于缺失值(例如,np.NaN,在csv中表示为",,")。这些可以被解析。这是关于一行中逗号的数量不正确。
假设你想修复这个文件,你需要找到坏掉的那一行(或者删除它,或者修复内容)。试着只读取一定数量的行(前100,500,1000,..),直到你遇到错误。这会让你找到那一行。或者复制这个文件,删除底部的90%,底部的80%,..直到错误弹出。

相关问题