按照另一个索引的顺序对Pandas Dataframe进行排序

AJG*_*519 16 python pandas

假设我有两个共享相同索引的数据帧,df1和df2.df1按照我希望df2排序的顺序排序.

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
Run Code Online (Sandbox Code Playgroud)

通过第一个数据框的索引对第二个数据帧进行排序的最佳/最有效方法是什么?

一个选项是加入它们,排序,然后删除列:

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

                 D
Arizona     Orange
New Mexico   Green
Colorado      Blue
Run Code Online (Sandbox Code Playgroud)

有更优雅的方式吗?

谢谢!

chr*_*isb 21

reindex 会工作 - 请注意它会为df的索引值创建缺失值,而不是df2.

In [18]: df2.reindex(df.index)
Out[18]: 
                 D
Arizona     Orange
New Mexico   Green
Colorado      Blue
Run Code Online (Sandbox Code Playgroud)