2016-04-22 290 views
0
問題

我試圖合併兩個以下dataframes on=SICcode大熊貓:與合併dataframes

df.head(5) 

    SICcode  Catcode  Category       SICname  MultSIC 
0 111   A1500 Wheat, corn, soybeans and cash grain Wheat  X 
1 112   A1600 Other commodities (incl rice, peanuts) Rice   X 
2 115   A1500 Wheat, corn, soybeans and cash grain Corn   X 
3 116   A1500 Wheat, corn, soybeans and cash grain Soybeans  X 
4 119   A1500 Wheat, corn, soybeans and cash grain Cash grains X 

df.columns.tolist() 

['\ufeffSICcode', 'Catcode', 'Category', 'SICname', 'MultSIC'] 

merged.head() 


2012 NAICS Code  2002to2007 NAICS SICcode 
0 111110   111110    116 
1 111120   111120    119 
2 111130   111130    119 
3 111140   111140    111 
4 111150   111150    115 

merged.columns.tolist() 
['2012 NAICS Code', '2002to2007 NAICS', 'SICcode'] 

當我嘗試用下面的代碼將它們合併:

merged=pd.merge(merged,df, how='left', on='SICcode')  

我得到一個Keyerror: 'SICcode'我試圖設置dfs的dtypeOne,但是當我這樣做時,我收到一個Keycode error

如果有人有這方面的想法或要求更多信息,請讓我知道。在第一列

+1

有什麼碼這是給錯誤? 'pd.merge(df,ef,on ='SICcode')'應該工作,除非你碰巧在名字中有一個空格。 – Stefan

+1

你能否包含產生錯誤的實際代碼? – Conor

+0

我的歉意,我只是更新了反映實際代碼的問題。 –

回答

2

注意:

In [27]: df = pd.read_csv('https://github.com/108michael/ms_thesis/raw/master/df.test', index_col=0) 

In [28]: df.columns.tolist() 
Out[28]: ['\ufeffSICcode', 'Catcode', 'Category', 'SICname', 'MultSIC'] 

In [29]: df['SICcode'] 

... 

KeyError: 'SICcode' 

In [30]: df['\ufeffSICcode'].head() 
Out[30]: 
0 111 
1 112 
2 115 
3 116 
4 119 
Name: SICcode, dtype: int64 

如@unutbu在他的評論中說,加入encoding='utf-8_sig'pd.read_csv()通話可以幫助你解決這個問題:

In [31]: df = pd.read_csv('https://github.com/108michael/ms_thesis/raw/master/df.test', index_col=0, encoding='utf-8_sig') 

In [32]: df.columns.tolist() 
Out[32]: ['SICcode', 'Catcode', 'Category', 'SICname', 'MultSIC'] 
+0

@MaxU和unutbu:問題已解決!謝謝你們兩人向我指出並提供解決方案。我正在閱讀'.head()'返回的列名。我不知道這樣的事情會出現。 –