2016-04-22 1 views
0

Ich versuche, die beiden folgenden Datenrahmen on=SICcode zu fusionieren:Pandas: Probleme mit verschmelzenden Datenrahmen

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'] 

Wenn ich versuche, sie mit dem folgenden Code zu fusionieren:

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

Ich erhalte eine Keyerror: 'SICcode' Ich habe versucht, die dtype von One der dfs zu setzen, aber wenn ich das tue, erhalte ich eine Keycode error.

Wenn jemand eine Idee zu diesem Thema hat oder weitere Informationen wünschen, lassen Sie es mich wissen.

+1

Was der Code ist das gibt den Fehler? 'pd.merge (df, ef, on = 'SICcode')' sollte funktionieren, es sei denn, Sie haben ein Leerzeichen im Namen. – Stefan

+1

Können Sie den tatsächlichen Code einfügen, der den Fehler verursacht? – Conor

+0

Entschuldigung, ich habe gerade die Frage aktualisiert, die den tatsächlichen Code widerspiegelt. –

Antwort

2

achten bei der ersten Spalte:

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 

als @unutbu in seinem Kommentar sagte, das Hinzufügen encoding='utf-8_sig' zum pd.read_csv() Aufruf könnte Ihnen helfen, dieses Problem zu beheben:

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 und unutbu: Problem gelöst! Ich danke Ihnen beiden, dass Sie mich darauf hingewiesen und eine Lösung angeboten haben. Ich las die Spaltennamen von der Rückkehr auf '.head()'. Ich hatte keine Ahnung, dass so etwas auftauchen könnte. –