使用只有一列的 csv,運行時
pd.read_csv('/MYPATH/MYFILE.csv')
我得到
ParserError: Error tokenizing data. C error: Expected 10 fields in line 4, saw 16
或長輸出:
/usr/local/lib/python3.7/dist-packages/pandas/io/parsers.py in read(self, nrows)
2155 def read(self, nrows=None):
2156 try:
-> 2157 data = self._reader.read(nrows)
2158 except StopIteration:
2159 if self._first_chunk:
pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader.read()
pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader._read_low_memory()
pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader._read_rows()
pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader._tokenize_rows()
pandas/_libs/parsers.pyx in pandas._libs.parsers.raise_parser_error()
ParserError: Error tokenizing data. C error: Expected 10 fields in line 4, saw 16
顯然,它不會將一列csv讀為一列,就好像標準分隔符將列拆分了一樣。因此,我制作了 separator None,但正在運行
pd.read_csv('/MYPATH/MYFILE.csv', sep=None)
投擲
/usr/local/lib/python3.7/dist-packages/pandas/io/parsers.py in _alert_malformed(self, msg, row_num)
2996 """
2997 if self.error_bad_lines:
-> 2998 raise ParserError(msg)
2999 elif self.warn_bad_lines:
3000 base = f"Skipping line {row_num}: "
ParserError: Expected 68 fields in line 26, saw 147
哪個分隔符 = 完全不拆分列的分隔符?
uj5u.com熱心網友回復:
您需要使用從未出現在資料中的分隔符。分隔符只是將輸入拆分為列,而不是行,因此我們可以這樣做:
pd.read_csv('/MYPATH/MYFILE.csv', sep="§§§")
或任何肯定不在 csv 中的字符。然后,該列將被讀取為一列,分隔符將不會檢測到任何需要的拆分。
沒有這個,標準分隔符被設定為sep=","顯然在“一列”csv的任何列中找到一些逗號。
積分轉到將CSV 匯入熊貓資料框,串列為列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/314436.html
