簡體   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