我有一个大的gzip
文件,我想导入到一个熊猫数据框中。不幸的是,该文件的列数不均匀。数据大致有以下格式:ValueError:通过块导入数据到pandas.csv_reader()
.... Col_20: 25 Col_21: 23432 Col22: 639142
.... Col_20: 25 Col_22: 25134 Col23: 243344
.... Col_21: 75 Col_23: 79876 Col25: 634534 Col22: 5 Col24: 73453
.... Col_20: 25 Col_21: 32425 Col23: 989423
.... Col_20: 25 Col_21: 23424 Col22: 342421 Col23: 7 Col24: 13424 Col 25: 67
.... Col_20: 95 Col_21: 32121 Col25: 111231
作为一个测试,我尝试这样做:
import pandas as pd
filename = `path/to/filename.gz`
for chunk in pd.read_csv(filename, sep='\t', chunksize=10**5, engine='python'):
print(chunk)
这是我得到的回报的错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/nfs/sw/python/python-3.5.1/lib/python3.5/site-packages/pandas/io/parsers.py", line 795, in __next__
return self.get_chunk()
File "/nfs/sw/python/python-3.5.1/lib/python3.5/site-packages/pandas/io/parsers.py", line 836, in get_chunk
return self.read(nrows=size)
File "/nfs/sw/python/python-3.5.1/lib/python3.5/site-packages/pandas/io/parsers.py", line 815, in read
ret = self._engine.read(nrows)
File "/nfs/sw/python/python-3.5.1/lib/python3.5/site-packages/pandas/io/parsers.py", line 1761, in read
alldata = self._rows_to_cols(content)
File "/nfs/sw/python/python-3.5.1/lib/python3.5/site-packages/pandas/io/parsers.py", line 2166, in _rows_to_cols
raise ValueError(msg)
ValueError: Expected 18 fields in line 28, saw 22
你怎么分配一定数量的pandas.read_csv()列?
你的问题是一些格式不正确的csv,它与预分配列数无关,您需要进行一些额外的调试以查找具体格式不正确的文件和行,您应该发布指向csv的链接或重现错误的小样本 – EdChum
@EdChum它不只是一行 - 这个文件实际上每行都是这样的。有些行可能有20列,接下来的28行是什么? – ShanZhengYang
我无法在没有看到具体数据的情况下回答假设性问题,发布数据时应该有定期的分隔符和表单,如果不是,那么您需要首先清理数据 – EdChum