我有几个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
有什么问题吗?这些文件可以单独读取,并且具有相同的标题(我记得删除了标题(看:上面的例子))。
1条答案
按热度按时间ltqd579y1#
很可能您的某个文件(比如
file1.csv
)没有以换行符结束。通过使用您提供的命令合并文件,file2.csv
的内容将从file1.csv
的最后一行末尾开始,这将导致一个“合并”行,其中包含的列数比预期的多。您可以通过确保每个csv文件都以换行符结尾来解决这个问题。说明性示例:
file1.csv(文件末尾缺少结束行字符):
file2.csv:
file_merged.csv:
This answer很好地解释了为什么所有的文本文件都应该以换行符结束。