Pandas.read_csv()在列名中包含特殊字符(重音符号)

时间:2016-09-22 23:36:12

标签: python pandas unicode utf-8 special-characters

我有一个csv文件,其中包含一些包含列名称的数据:

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

我遇到第三个 “IAS_lissé” 的问题,它被pd.read_csv()方法误解,并返回为 。

那个角色是什么?

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

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')

4 个答案:

答案 0 :(得分:4)

您可以更改read_csv的encoding参数,请参阅pandas doc 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

答案 1 :(得分:2)

我发现了西班牙语的相同问题,并使用“ latin1”编码解决了该问题:

import pandas as pd

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

希望有帮助!

答案 2 :(得分:1)

使用utf-8并不适合我。例如。这段代码:

    bla = pd.DataFrame(data = [1, 2])
    bla.to_csv('funkyNamé , things.csv')
    blabla = pd.read_csv('funkyNamé , things.csv', delimiter=";", encoding='utf-8')
    blabla 

最终返回:OSError:从文件初始化失败

我知道你说你不想修改文件。如果您的意思是文件内容与文件名,我会将文件重命名为没有重音的内容,以新名称读取csv文件,然后将文件名重置为其原始名称。

    originalfilepath = r'C:\Users\myself\\funkyNamé , things.csv'
    originalfolder = r'C:\Users\myself'
    os.rename(originalfilepath, originalFolder+"\\tempName.csv")
    df = pd.read_csv(originalFolder+"\\tempName.csv", encoding='ISO-8859-1')
    os.rename(originalFolder+"\\tempName.csv", originalfilepath)

如果你的意思是"没有修改文件名称,我很抱歉没有帮助你,我希望这有助于其他人。

答案 3 :(得分:1)

尝试使用:

import pandas as pd    
df = pd.read_csv('file_name.csv', encoding='utf-8-sig')