合并后无法读取CSV文件

fkaflof6  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(177)

我有几个CSV文件具有相同的标题。
为了优化我的工作,我合并了文件以获得一个pd.DataFrame:

file1.csv > file_merged.csv
file2.csv | tail -n +2 > file_merged.csv

但是在pd.read_csv中,我得到一个错误:

228         try:
    229             if self.low_memory:
--> 230                 chunks = self._reader.read_low_memory(nrows)
    231                 # destructive to chunks
    232                 data = _concatenate_chunks(chunks)

~/.local/lib/python3.10/site-packages/pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader.read_low_memory()

~/.local/lib/python3.10/site-packages/pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader._read_rows()

~/.local/lib/python3.10/site-packages/pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader._tokenize_rows()

~/.local/lib/python3.10/site-packages/pandas/_libs/parsers.pyx in pandas._libs.parsers.raise_parser_error()

ParserError: Error tokenizing data. C error: Expected 4 fields in line 1391, saw 7

有什么问题吗?这些文件可以单独读取,并且具有相同的标题(我记得删除了标题(看:上面的例子))。

ltqd579y

ltqd579y1#

很可能您的某个文件(比如file1.csv)没有以换行符结束。通过使用您提供的命令合并文件,file2.csv的内容将从file1.csv的最后一行末尾开始,这将导致一个“合并”行,其中包含的列数比预期的多。您可以通过确保每个csv文件都以换行符结尾来解决这个问题。
说明性示例:
file1.csv(文件末尾缺少结束行字符):

column1,column2,column3
0,0,0
1,1,1

file2.csv:

column1,column2,column3
2,2,2
3,3,3

file_merged.csv:

column1,column2,column3
0,0,0
1,1,12,2,2
3,3,3

This answer很好地解释了为什么所有的文本文件都应该以换行符结束。

相关问题