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