pandas读取中文csv文件

0
出现乱码,这里加encoding='utf-8'好像不管用。
已邀请:
1

Jason_Huang 2017-04-17 回答

UTF-8和 UTF-8 BOM 的区别就是有没有 BOM。即文件开头有没有 U+FEFF。具体的BOM解释请参阅 https://en.wikipedia.org/wiki/Byte_order_mark

错误原因: 
notepad++转换的UTF-8格式默认是UTF-8 with BOM,pandas在去读带有BOM的文件的时候将文件开头的标签当成了第一列列名的一部分,因此,在后续使用到第一列列名的过程中,会出现“not in index”的报错。 
解决方法: 
使用notepad++转换成UTF-8无BOM格式就ok了 
tips:如果想要判断一个列名在不在columns中可以使用
print('name' in table.columns)
进行判断,’name’ in table.columns会返回True or False。
0

alfredzh - alfred 2017-04-17 回答

谢谢,后来查了一下,源文件是用GB2312编码的,所以加了encoding='GB2312'就没问题了。看来,pandas默认的解码方式是UTF-8
0

ID王大伟 - 人生苦短,我选Python。 2017-04-18 回答

直接去掉,encoding='utf-8'即可

要回复问题请先登录注册