2016-07-19 126 views
1

我具有與第一2行的CSV文件,數據爲:蟒大熊貓讀取csv文件錯誤在列名

NewDateTime ResourceName  
9/18/12 1:00 ANACACHO_ANA  
9/18/12 2:00 ANACACHO_ANA  

當我使用熊貓數據幀它讀作:

df = pd.read_csv(r'MyFile.csv') 

我得到

df1.columns 
Index([u'NewDateTime', u'ResourceName', dtype='object') 

然而,當我嘗試

df1['NewDateTime'] 

我得到錯誤:

UnicodeEncodeError: 'ascii' codec can't encode character u'\ufeff' in position 5: ordinal not in range(128) 

另外,DF1 [「NewDateTime」]我pycharm解釋有一個小破折號作爲DF1 [「 - NewDateTime」],但是當我在這裏粘貼在儀表板沒有按」 T顯示了

+1

作爲[文件]中(HTTP ://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html):read_csv的 - 默認 - 只處理逗號分隔的csv文件。我進一步假設你有一些編碼問題。把這個小的csv文件再手工創建。問題是否仍然存在?當你只是閱讀文件內容並通過python打印時會發生什麼?有什麼奇怪的嗎? – mhoff

回答

1

它看起來像您的CSV文件有一個BOM (Byte Order Mark) signature,所以儘量使用'utf-8-sig''utf-16'或另一種編碼與BOM解析:

df = pd.read_csv(r'MyFile.csv', encoding='utf-8-sig') 

這裏是一個小的演示:

In [18]: pd.read_csv(fn).columns 
Out[18]: Index([u'?NewDateTime', u'ResourceName'], dtype='object') 

In [19]: pd.read_csv(fn, encoding='utf-8-sig').columns 
Out[19]: Index([u'NewDateTime', u'ResourceName'], dtype='object') 
在我的IPython終端

的BOM簽名在u'?NewDateTime'表現爲? - 在你的情況下,它是一個破折號標誌:df1['-NewDateTime']