2016-03-20 2 views
0

Ich habe zwei Datenrahmen als soWie kann ich einen Datenrahmen mit wiederholten Indexeinträgen mit einem mit eindeutigen Indexeinträgen zusammenführen?

enter image description here

Einer dieser Datenrahmen hat einen Index, der wiederholt wird, und ich möchte sie mit einem anderen Datenrahmen verbinden, in denen das nicht so ist. Zum Beispiel

Dataframe I =

[ index column1] 
leb  Lebanon 
iso  iso1 
CAN   Canda 

Datenrahmen I2 =

[ index column1] 
leb  ra 
CAN  ba 
CAN   gell 

ich sie so zusammenführen möchten, dass

Datenrahmen Iges =

DataFrame I2= 
[ index column1  column2] 
leb  ra   Lebanon 
CAN  ba   Canada 
CAN   gell  canada 

Es ist ein Eins-zu-eins-Verknüpfung Stata, wie in http://www.stata.com/manuals13/dmerge.pdf S.7 gesehen werden kann.

+0

Ich glaube, die Standard-Merge in Pandas ist viele zu eins. Sie müssen nur nach Index zusammenführen. Dies sollte dir geben, was du willst. '' 'df1 = pd.DataFrame ([" Libanon "," iso1 "," Canda "], Spalten = [" column1 "], index = [" leb "," iso "," CAN "])' '' '' 'df2 = pd.DataFrame ([" ra "," ba "," gel1 "], Spalten = [" column2 "], index = [" leb "," CAN "," CAN " ]) '' '' '' pd.merge (df1, df2, right_index = Wahr, left_index = True) '' ' – Ben

Antwort

0

Betrachten Sie diesen Datenrahmen

df = pd.DataFrame({'Year': [2010,2009,2008], 
         'population_A': ['101597.0', '101416.0', '101342.0'], 
         'Country':['Aruba', 'Aruba', 'Aruba']}) 

    df = df.set_index(['Country']) 
    df 

Betrachten Sie die andere nicht-repetitiven Datenrahmen seine

df1 = pd.DataFrame({'Country':['Aruba','Afghanistan','Africa','Lebanon'], 'iso3c':['ABW','AFG','AFR','LEB']}) 
df1 = df1.set_index(['Country']) 
df1 

Dazu wir den ersten Datenrahmen benötigen einen anderen Index als Land haben sagen id 0,1 , 2, ...

df.reset_index(level=0, inplace=True) 
df 
df.join(df1, on='Country') 

das ist es