我正在尝试读取100个CSV,并将所有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
任何帮助都将不胜感激!
有几种读取可变长度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)
这是因为您试图将所有CSV文件读取到单个数据帧中。当第一个文件被读取时,DataFrame的列数被决定,然后当馈送不同数量的列时,它会导致错误。如果你真的想连接它们,你应该在python中读取它们,调整它们的库,然后连接它们