如何使用pandas dataframe读取包含utf-8值的.csv文件

6

我正在尝试读取一个包含utf-8数据的.csv文件,其中一些列是utf-8格式。使用pandas dataframe进行读取。代码如下:

df = pd.read_csv('Cancer_training.csv', encoding='utf-8')

接下来我会给你一些不同文件出现错误的示例:

(1) 'utf-8' 编码无法解码字节 0xcf,位置在第14位:无效的连续字节

(2) 'utf-8' 编码无法解码字节 0xc9,位置在第3位:无效的连续字节

您能否分享一下您对这种问题的想法和经验?谢谢。

[python: 3.4.1.final.0, pandas: 0.14.1]

以下是原始数据的样本,由于医疗数据的法律限制,我不能放出完整记录:

enter image description here


2
你能发布一些原始数据吗?另外,你使用的是哪个版本的pandas和python? - EdChum
非常感谢您的快速回复。我已经更新了我的问题。期待您的友好反馈。 - Clinical
1
这是度符号的Unicode,这在我的机器上工作得很好,你可以将数据匿名化,只包括有问题的行,我们需要原始数据来复现你的问题。请注意,解析器报错是由于不同的编码方式:http://www.codetable.net/hex/cf 和 http://www.codetable.net/hex/c9。 - EdChum
再次问候您。很抱歉回复晚了,我被我的数据问题困住了。我会继续考虑您所提出的建议来解决我的问题。明天我会回来报告我的进展情况。祝您晚上愉快,EdChum先生。 - Clinical
希望你一切都好。我想向你报告我的最终结果。实际上,我尝试了所有不同的编码方式,因为我认为我的数据集中可能没有utf-8编码,但仍然存在问题。然而,我决定使用正则表达式清理我的一些数据集,并使用简单的Python代码处理其他数据集。再次感谢你的评论和时间。 - Clinical
显示剩余2条评论
2个回答

4

我无缘无故遇到了这个问题,但通过以下方式解决了它:

df = pd.read_csv('file', encoding = "ISO-8859-1")

不过我不确定为什么。


我做了这个,它起作用了,但不确定为什么。 - paula.n

1

我也按照Irh09的建议进行了操作,但是它读取的第二个文件被错误解码,无法找到带有波浪符(á,é,í,ó,ú)的列。

因此,我建议像这样封装错误:

try:
    df = pd.read_csv('file', encoding = "utf-8")
except:
    df = pd.read_csv('file', encoding= "ISO-8859-1")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接