2016-09-22 104 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