2016-09-22 61 views
4

我有一个csv文件,其中包含与列名的一些数据:Pandas.read_csv()有特殊字符(重音)列名

  • “PERIODE”
  • “IAS_brut”
  • “IAS_lissé”
  • “Incidence_Sentinelles”

我有个问题与第三个其通过pd.read_csv()方法误解并返回为“IAS_lissé”

那个角色是什么?

因为它在烧瓶应用程序中生成一个错误,有没有办法以其他方式读取该列而不修改文件?

In [1]: import pandas as pd 

In [2]: pd.read_csv("Openhealth_S-Grippal.csv",delimiter=";").columns 

Out[2]: Index([u'PERIODE', u'IAS_brut', u'IAS_liss�', u'Incidence_Sentinelles'], dtype='object') 
+0

貌似熊猫不能在列名处理Unicode字符。尝试将列名转换为ascii。请注意,你会失去重音。 –

回答

1

您可以更改encoding参数read_csv,看到大熊猫文档here。另外python标准编码是here

我相信你的例子你可以使用utf-8编码(假设你的语言是法语的)。

df = pd.read_csv("Openhealth_S-Grippal.csv", delimiter=";", encoding='utf-8') 

下面是示出一些示例输出的例子。我所做的只是使用问题字符制作带有一列的csv文件。

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

输出:

IAS_lissé 
0 1 
1 2 
2 3 
+0

Oups!我得到一个错误(同一个)''utf8'编解码器无法解码位置8中的字节0xe9:数据意外结束' – farhawa

+3

这是因为您的数据未编码为'utf-8'。试试'latin1':'pd.read_csv(“Openhealth_S-Grippal.csv”,delimiter =“;”,encoding ='latin1')'... – Kartik

+0

是的,latin1是我第一次使用的,但改变了它到'utf-8'。 @farhawa,如果你想得到更好的答案,你可以发布你的csv或其头文件,以便我们知道你的编码是什么。 – shawnheide