如何根据具有相同列但不同顺序的另一个数据帧重新排序列

时间:2017-02-27 18:32:47

标签: python pandas dataframe

我想知道是否有一种方便的方法来根据具有相同列但具有不同顺序的另一个数据帧的列来排序数据帧的列。或者,我是否必须制作一个循环来实现这一目标?

1 个答案:

答案 0 :(得分:9)

试试这个:

df2 = df2[df1.columns]

演示:

In [1]: df1 = pd.DataFrame(np.random.randint(0, 10, (5,4)), columns=list('abcd'))

In [2]: df2 = pd.DataFrame(np.random.randint(0, 10, (5,4)), columns=list('badc'))

In [3]: df1
Out[3]:
   a  b  c  d
0  8  3  9  6
1  0  6  4  7
2  7  2  0  7
3  0  5  1  8
4  6  2  5  4

In [4]: df2
Out[4]:
   b  a  d  c
0  3  8  0  4
1  7  7  4  2
2  2  7  3  8
3  2  4  9  6
4  3  4  7  1

In [5]: df2 = df2[df1.columns]

In [6]: df2
Out[6]:
   a  b  c  d
0  8  3  4  0
1  7  7  2  4
2  7  2  8  3
3  4  2  6  9
4  4  3  1  7

替代解决方案:

df2 = df2.reindex_axis(df1.columns, axis=1)