繁体   English   中英

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

[英]Pandas.read_csv() with special characters (accents) in column names �

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

  • “时期”
  • “IAS_brut”
  • “IAS_lissé”
  • “事件_哨兵”

我对第三个“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')

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

我相信对于您的示例,您可以使用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

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

import pandas as pd

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

希望能帮助到你!

使用 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: Initializing from file failed

我知道你说过你不想修改文件。 如果您指的是文件内容与文件名,我会将文件重命名为不带重音的名称,以新名称读取 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)

, my apologies for not being helpful to you, and I hope this helps someone else.如果你的意思是“不修改文件,我很抱歉没有对你有帮助,我希望这能帮助别人。

尝试使用:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM