2015-08-05 13 views
6

Angenommen, ich habe zwei Datenrahmen, df1 und df2, die denselben Index haben. df1 wird in der Reihenfolge sortiert, in der df2 sortiert werden soll.Pandas Dataframe nach Reihenfolge eines anderen Indexes sortieren

df=pd.DataFrame(index=['Arizona','New Mexico', 'Colorado'],columns=['A','B','C'], data=[[1,2,3],[4,5,6],[7,8,9]]) 
print df 

      A B C 
Arizona  1 2 3 
New Mexico 4 5 6 
Colorado 7 8 9 


df2=pd.DataFrame(index=['Arizona','Colorado', 'New Mexico'], columns=['D'], data=['Orange','Blue','Green']) 
print df2 
       D 
Arizona  Orange 
Colorado  Blue 
New Mexico Green 

Was ist die beste/effizienteste Art der Sortierung des zweiten Datenrahmens nach dem Index des ersten?

Eine Möglichkeit ist, sie einfach verbinden, Sortieren und dann die Spalten fallen:

df.join(df2)[['D']] 

       D 
Arizona  Orange 
New Mexico Green 
Colorado  Blue 

Gibt es eine elegantere Möglichkeit, dies zu tun?

Danke!

Antwort

12

reindex würde funktionieren - beachten Sie, dass es fehlende Werte für Indexwerte erstellt, die df sind, nicht in DF2.

In [18]: df2.reindex(df.index) 
Out[18]: 
       D 
Arizona  Orange 
New Mexico Green 
Colorado  Blue 
+0

Danke, das ist genau das, was ich gesucht habe. – AJG519

Verwandte Themen