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

ren*_*kre 6 python dataframe pandas

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

Max*_*axU 10

试试这个:

df2 = df2[df1.columns]
Run Code Online (Sandbox Code Playgroud)

演示:

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

替代方案:

df2 = df2.reindex_axis(df1.columns, axis=1)
Run Code Online (Sandbox Code Playgroud)