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

时间:2015-08-05 22:32:01

标签: 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

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

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

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

                 D
Arizona     Orange
New Mexico   Green
Colorado      Blue

有更优雅的方式吗?

谢谢!

1 个答案:

答案 0 :(得分:19)

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

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