Sorting Pandas Dataframe by order of another index

Question:

Say I have two dataframes, df1 and df2 that share the same index. df1 is sorted in the order that I want df2 to be sorted.

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

What is the best / most efficient way of sorting the second dataframe by the index of the first?

One option is just joining them, sorting, and then dropping the columns:

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

                 D
Arizona     Orange
New Mexico   Green
Colorado      Blue

Is there a more elegant way of doing this?

Thanks!

Asked By: AJG519

||

Answers:

reindex would work – be aware that it will create missing values for index values that are in df, but not in df2.

In [18]: df2.reindex(df.index)
Out[18]: 
                 D
Arizona     Orange
New Mexico   Green
Colorado      Blue
Answered By: chrisb
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.