【问题标题】:Pandas.read_csv() ignore bad lines/rows containing FEWER fields. Text filePandas.read_csv() 忽略包含 FEWER 字段的坏行/行。文本文件
【发布时间】:2020-08-04 23:37:51
【问题描述】:

我正在尝试阅读这个巨大的文本文件:https://www.dropbox.com/s/3ikikw8bxde6y1i/TCAD_SPECIAL%20EXPORT_2019_20200409.zip?dl=0(如果您下载 zip,该文件是 Special_ARB.txt(对于我的问题 imo 不是必需的)。

我正在运行此代码(添加 error_bad_lines=False)以忽略具有超出预期字段的行,效果很好:

pd.read_csv(r'~/Special_ARB.txt', sep="|", 
            header=None,encoding='cp1252',error_bad_lines=False)

问题是read.csv() 在一行只有 1 个字段时崩溃。出现以下错误:

指定的列过多:预期为 77,但找到了 1

有没有办法告诉 python/pandas 忽略这个错误?它不会让我知道它是哪条线。有超过一百万行,所以我不能自己找到它。

  • 我尝试了一个 for 循环来逐行读取并从那里计算出来,但是数据太大以至于 python 崩溃了。
  • 运行代码时,pandas 正确识别的列数为 77,我认为这不是问题。

谢谢,

【问题讨论】:

    标签: python pandas text read.csv


    【解决方案1】:

    这应该适用于内存数据集,您可以在大型数据集上使用分块解决方案:https://stackoverflow.com/a/59331754/9379924

    【讨论】:

      【解决方案2】:
      try:
         pd.read_csv(r'~/Special_ARB.txt', sep="|", header=None,encoding='cp1252',error_bad_lines=False)
      except <your error description>:
         <do this>
      

      【讨论】:

      • 这如何回答这个问题?异常处理需要逐行完成,而不是跨整个文件。
      猜你喜欢
      • 2018-01-22
      • 1970-01-01
      • 1970-01-01
      • 2018-01-14
      • 1970-01-01
      • 1970-01-01
      • 2015-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多