2016-04-22 183 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()'返回的列名。我不知道这样的事情会出现。 –