read_csv()中的ParserError

hc8w905p  于 2023-06-19  发布在  其他
关注(0)|答案(2)|浏览(152)

我尝试读取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

任何帮助将不胜感激!

vngu2lb8

vngu2lb81#

有几种方法可以读取可变长度的csv文件-
首先,您可以预先指定列名。如果不确定列数,可以给予一个合理的较大列数
df = pd.read_csv(filename.csv, header=None, names=list(range(10)))
另一种选择是使用不同的分隔符将整个文件读入一个单独的列-然后用逗号拆分

df = pd.read_csv(filename.csv, header=None, sep='\t')
df = df[0].str.split(',', expand=True)
nsc4cvqm

nsc4cvqm2#

这是因为您试图将所有CSV文件读入一个数据框架。当读取第一个文件时,决定DataFrame的列数,然后当馈送不同数量的列时会导致错误。如果你真的想concat它们,你应该用python阅读它们,调整它们的coulmns,然后再concat它们

相关问题