从维度为800万* 20的csv文件(使用带有8GMRAM的PC和Anaconda 4)读取以下错误
注意,相同的命令在运行时工作:
。
filename= "ec_all.csv"
df= pd.read_csv (filename,encoding= 'unicode_escape', low_memory=False, parse_dates=["FIRSTCLASS"])
---------------------------------------------------------------------------
ParserError Traceback (most recent call last)
<ipython-input-5-62582a9f3753> in <module>()
1 # Reading data from file to create data frame
----> 2 df= pd.read_csv (filename,encoding= 'unicode_escape', low_memory=False, parse_dates=["FIRSTCLASS"])
C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py in parser_f(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, escapechar, comment, encoding, dialect, tupleize_cols, error_bad_lines, warn_bad_lines, skipfooter, skip_footer, doublequote, delim_whitespace, as_recarray, compact_ints, use_unsigned, low_memory, buffer_lines, memory_map, float_precision)
653 skip_blank_lines=skip_blank_lines)
654
--> 655 return _read(filepath_or_buffer, kwds)
656
657 parser_f.__name__ = name
C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py in _read(filepath_or_buffer, kwds)
409
410 try:
--> 411 data = parser.read(nrows)
412 finally:
413 parser.close()
C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py in read(self, nrows)
980 raise ValueError('skipfooter not supported for iteration')
981
--> 982 ret = self._engine.read(nrows)
983
984 if self.options.get('as_recarray'):
C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py in read(self, nrows)
1717 def read(self, nrows=None):
1718 try:
-> 1719 data = self._reader.read(nrows)
1720 except StopIteration:
1721 if self._first_chunk:
pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader.read (pandas\_libs\parsers.c:10885)()
pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader._read_rows (pandas\_libs\parsers.c:12054)()
pandas\_libs\parsers.pyx in pandas._libs.parsers.raise_parser_error (pandas\_libs\parsers.c:28765)()
ParserError: Error tokenizing data. C error: EOF inside string starting at line 2119608数据快照:

发布于 2022-06-06 10:20:17
尝试使用参数engine='python'。这可能会绕过EOF问题。
此外,还可以添加一个on_bad_lines参数来为每一行调用一个函数。然后,这可以用于显示有问题的行,然后可以添加代码以可能修复它们(或者忽略它们,取决于数据的重要性)
import pandas as pd
def bad_line(x):
print(x)
return None
df = pd.read_csv('input.csv', encoding='unicode_escape', on_bad_lines=bad_line, engine='python')
print(df)我认为on_bad_lines的可调用版本是在1.3.0版本中添加的。您可以通过以下方式查看您的版本:
print(pd.__version__)https://stackoverflow.com/questions/72513500
复制相似问题