2014-02-21 260 views
2

我正在使用熊貓來讀取.csv數據文件。對於我的一個文件,我可以使用列標題進行索引。至於其他,我得到錯誤信息熊貓不識別csv列

File "/usr/lib/python2.7/dist-packages/pandas/core/internals.py", 
line 1023, in _check_have 
raise KeyError('no item named %s' % com.pprint_thing(item)) 
KeyError: u'no item named State' 

我使用的代碼是:

filename = "PovertyEstimates.csv" 
#filename = "nm.csv" 

f = open(filename) 
import pandas as pd 

data = pd.read_csv(f)#, index_col=0) 
print data['State'] 

即使當我使用index_col我得到同樣的錯誤(除非它爲0)。我發現當我打印沒有在我的終端工作的csv文件時,它不會被分成像那樣的列。相反,每行中的項目連續打印,並用空格分隔。我相信這種錯誤的分離是問題所在。

我在Ubuntu Linux上使用LibreOffice Calc。爲不正確格式的文件(顯示於完美格式中的LibreOffice)的終端輸出是:

<class 'pandas.core.frame.DataFrame'> 
Int64Index: 3194 entries, 0 to 3193 
Data columns: 
FIPStxt State Area_name Rural-urban_Continuum Code_2003  Urban_Influence_Code_2003 Rural-urban_Continuum Code_20013  Urban_Influence_Code_20013 POVALL_2011 CI90LBAll_2011 CI90UBALL_2011 PCTPOVALL_2011 CI90LBALLP_2011 CI90UBALLP_2011 POV017_2011 CI90LB017_2011 CI90UB017_2011 PCTPOV017_2011 CI90LB017P_2011 CI90UB017P_2011 POV517_2011 CI90LB517_2011 CI90UB517_2011 PCTPOV517_2011 CI90LB517P_2011 CI90UB517P_2011 MEDHHINC_2011 CI90LBINC_2011 CI90UBINC_2011 POV05_2011 CI90LB05_2011 CI90UB05_2011 PCTPOV05_2011 CI90LB05P_2011  CI90UB05P_2011 3194 non-null values 
dtypes: object(1) 

csv文件的前幾行是:

FIPStxt State Area_name Rural-urban_Continuum Code_2003  
01000 AL Alabama  
01001 AL Autauga County 2 2 
01003 AL Baldwin County 4 5 
+0

是什麼平臺你在使用,你能提供一個終端輸出的例子嗎? – offbyone

+0

你能向我們展示csv的前幾行(所以我們可以看到這一點)。它是否逗號分隔? –

+0

我添加的最後一塊有它。空間是列分離的地方。我想使用頂部行標題('State'或'FIPStxt')來索引 – cubedNnoobed

回答

1

的空間是可能的問題。您需要告訴大熊貓分析CSV時使用哪個分隔符。

data = pd.read_csv(f, sep=" ") 

問題是,雖然,它會拿起所有空間爲有效分隔符(如亞拉巴馬州縣變成2列)。最好將是一個文件轉換成一個實際的逗號(分號或其他)分隔的文件或確保複合值引號(「阿拉巴馬州縣誌」),然後指定quotechar:

data = pd.read_csv(f, sep=" ", quotechar='"')