【发布时间】: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