首页 > 解决方案 > 根据来自另一个 pandas 数据帧的列的排序对列进行排序

问题描述

我有一个这样的数据框:

 df1:
 col1    col2 
  P        1
  Q        3
  M        2

我有另一个数据框:

df2:
col1      col2
 Q         1
 M         3
 P         9

我想根据 df1 的 col1 的顺序对 df2 的 col1 进行排序。所以最终的数据框将如下所示:

 df3:
 col1     col2
  P         1
  Q         3
  M         9

如何使用 pandas 或任何其他有效方法来做到这一点?

标签: pythonpandasdataframe

解决方案


您可以使用with设置col1为索引df2使用set_index和索引数据框:df1.col11.loc

df2.set_index('col1').loc[df1.col1].reset_index()

   col1  col2
0    P     9
1    Q     1
2    M     3

或者正如@jpp 建议的那样,您也可以使用.reindex代替.loc

df2.set_index('col1').reindex(df1.col1).reset_index()

推荐阅读