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

far*_*awa 11 python unicode utf-8 special-characters pandas

我有一个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')
Run Code Online (Sandbox Code Playgroud)

sha*_*ide 13

您可以更改encodingread_csv的参数,请参阅此处的Pandas 文档。还有 python 标准编码在这里

我相信对于您的示例,您可以使用utf-8编码(假设您的语言是法语)。

df = pd.read_csv("Openhealth_S-Grippal.csv", delimiter=";", encoding='utf-8')
Run Code Online (Sandbox Code Playgroud)

这是一个显示一些示例输出的示例。我所做的只是使用问题字符制作一个包含一列的 csv 文件。

df = pd.read_csv('sample.csv', encoding='utf-8')
Run Code Online (Sandbox Code Playgroud)

输出:

    IAS_lissé
0   1
1   2
2   3
Run Code Online (Sandbox Code Playgroud)

  • 那是因为您的数据未编码为“utf-8”。试试 `latin1`: `pd.read_csv("Openhealth_S-Grippal.csv", delimiter=";", encoding='latin1')`... (9认同)

小智 13

我发现西班牙语也有同样的问题,用“latin1”编码解决了这个问题:

import pandas as pd

 pd.read_csv("Openhealth_S-Grippal.csv",delimiter=";", encoding='latin1')
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!

  • Latin1 编码也适用于德语变音符号(utf8 则不行)。谢谢! (2认同)

Gil*_*gio 13

尝试使用:

import pandas as pd    
df = pd.read_csv('file_name.csv', encoding='utf-8-sig')
Run Code Online (Sandbox Code Playgroud)

  • 这最终对我有用。UTF-8 并没有抛出错误 - 但它把“é”变成了“É”。latin1 不起作用 - 它在“ś”上引发了错误。 (2认同)