我尝试读取100个CSV,并将所有数据整理成一个CSV。我利用了:
all_files = pd.DataFrame()
for file in files :
all_files = all_files.append(pd.read_csv(file,encoding= 'unicode_escape')).reset_index(drop=True)
其中files = 100个CSV的文件路径列表
现在每个CSV可能有不同数量的列。单个CSV,每行可以有不同的编号。柱也。我想匹配列标题名称,将所有CSV中的数据放在正确的列中,并在旅途中不断向最终DF添加新列。
上述代码适用于30-40个CSV,然后中断并给出以下错误:
ParserError: Error tokenizing data. C error: Expected 16 fields in line 78, saw 17
任何帮助将不胜感激!
2条答案
按热度按时间vngu2lb81#
有几种方法可以读取可变长度的csv文件-
首先,您可以预先指定列名。如果不确定列数,可以给予一个合理的较大列数
df = pd.read_csv(filename.csv, header=None, names=list(range(10)))
另一种选择是使用不同的分隔符将整个文件读入一个单独的列-然后用逗号拆分
nsc4cvqm2#
这是因为您试图将所有CSV文件读入一个数据框架。当读取第一个文件时,决定DataFrame的列数,然后当馈送不同数量的列时会导致错误。如果你真的想concat它们,你应该用python阅读它们,调整它们的coulmns,然后再concat它们