【问题标题】:pandas to_csv read_csv encoding errorpandas to_csv read_csv 编码错误
【发布时间】:2018-06-02 18:05:26
【问题描述】:

我在 pandas (v21.1)(Python 3、Windows(220k 行)中构建了一个数据框并写入 csv。 在 Excel 中打开,文件看起来很好(220k 行)。 使用 pandas 读入,现在文件多了 40k 行,并且经常出现各种编码错误。

尝试了多种to_csv/read_csvencoding=组合,包括: utf-8、utf-8-sig、cp1252、ascii 和 utf-16 写出来:

encoding='cp1252' or 'ascii' - UnicodeEncodeError: 'charmap' codec can't encode character '\u1e28' in position 261: character maps to <undefined>
encoding='utf-8',`utf-8-sig`,`utf-16`,`cp1252`,  - no Python error in the console, but still doesn't render correctly when I import it again.

阅读时我经常收到警告: DtypeWarning: Columns (0,1,3,4,6,7,8,9,10,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,29,30,31,32,37,38,39,40,41,42,43,46,47,48,49,50,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,91,92,93,94,95,96,97,98,99,100,101,102) have mixed types. Specify dtype option on import or set low_memory=False. interactivity=interactivity, compiler=compiler, result=result)

我尝试为列指定dtypes,方法是在to_csv 时保存dtypesdict,并使用相同的dict 作为read_csv 的输入 - 但它也给出了错误,因为发现了意外的数据类型,例如ValueError: Integer column has NA values in column 33

当我将它作为 Excel 文件输出/输入时,它似乎工作正常。 当我尝试安装 Python 2.7 时,会出现同样的问题。

我怀疑问题可能与我导入的第 3 方 csv 文件有关,该文件似乎仅在我使用“cp1252”时才导入。我尝试使用 utf-8 在 Excel 中重新保存此输入文件 - 但这也没有用。

感谢您的建议!

【问题讨论】:

  • 您使用的是哪个分隔符?如果未正确处理,这可能会导致 csv 中出现额外的行。
  • @Ryu 我只试过','
  • csv 文件是否包含除分隔符以外的任何逗号?如果是,我会建议你在阅读 csv 时使用另一个分隔符..

标签: python pandas csv utf-8 python-unicode


【解决方案1】:

DtypeWarning 你得到的是因为熊猫无法推断出所有这些列的数据类型。在 dtype 参数中设置它们 str 将使警告静音。

参考:https://stackoverflow.com/a/27232309/5182482

使用 pandas 读入,现在文件多了 40k 行,并且经常出现各种编码错误。

关于这个问题,我不能确切地告诉你。

【讨论】:

    猜你喜欢
    • 2015-09-04
    • 2021-01-31
    • 2016-04-17
    • 2015-04-03
    • 2019-12-27
    • 2015-08-08
    • 1970-01-01
    • 2013-10-27
    相关资源
    最近更新 更多