【问题标题】:Pandas read_csv EOF inside string starting at line从行开始的字符串中的 Pandas read_csv EOF
【发布时间】:2018-06-09 22:06:59
【问题描述】:

我遇到了 pandas read_csv 的问题。我有一个文件,其中包含 " 作为字段值。实际上,情况并非如此,但我对文件生成没有影响,因此我必须找到解决方法。

pandas.errors.ParserError:数据标记错误。 C 错误:字符串中的 EOF 从第 15345 行开始

我在 Git (link here) 上找到了一个关于此的问题报告,他们建议将用于“sep”参数的分隔符也用于“quotechar”。在这种情况下,文件的结构就会混乱。

我做的另一件事是为此添加一个例外,这将为其余文件运行代码,但对于该特定类型的文件,我将继续遇到该问题。

我用来读取 CSV 文件的命令:

df_new = pd.read_csv(file_path_name, sep=";", error_bad_lines=False)

对此有任何解决方法的想法(例如,忽略此问题的行)?我猜一种方法是使用 csv 库来删除该行(或用其他东西替换 "),但我想保持简单并在 pandas 中尽可能多地做。

Python 版本:3.6.2

熊猫版本:0.21.0

谢谢你和最好的问候

【问题讨论】:

  • 您可以从您的 csv 文件中发布样本错误记录吗?我问是因为我正在尝试复制您的问题但没有遇到它。
  • error_bad_lines=False 是一种解决方法。但解决方案将涉及查看导致加载错误的行。
  • 您好!我已经尝试过了,这只解决了一个问题,即一行中有太多/很少的字段,当发生 EOF 问题时,它仍然不会将文件读入数据帧@user8505495:这是导致问题(分隔符设置为;)“;”;testmail@mail.com;PRI;BUS;0;1;0.00;;;;;ACTIVE;1;;;0;TRUE;GEO;FALSE;1
  • 您是否尝试过此处描述的添加 quoting=csv.QUOTE_NONE 的内容 (stackoverflow.com/questions/18016037/…)?
  • @user8505495,谢谢你,它确实解决了我的问题:) 我之前看到过这个设置,但我不知道它的作用,所以我什至没有尝试过。对于任何会发现这很有用的人来说一件事 - 在 to_csv 命令中使用 quoting=3 会导致我出错(缺少转义字符),所以我只将此选项用于 read_csv。再次感谢您的帮助!

标签: python pandas eof


【解决方案1】:

只想指出@user8505495 的建议有效(再次感谢您)。

基本上只是将参数quoting=3 添加到read_csv。在to_csv 中使用相同的参数会导致错误(缺少转义字符)。一种选择是设置escapechar 参数,或者不使用quoting 参数。

【讨论】:

    猜你喜欢
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 2015-04-03
    • 1970-01-01
    • 2020-06-16
    相关资源
    最近更新 更多