Python/Pandas:基于另一个数据帧过滤和组织数据帧的行和列

问题描述

我有两个数据框,例如下面的 df1、df2。 我想:

  • filter df1:即去除行和列,使其具有与df2相同的索引元素和列。不应修改表中保留的列和行的元素。
  • 此外,我想组织这个“过滤”数据框的行和列,使其具有与 df2 相同顺序的行和列。

数据框 df1 是:

索引 x_3 x_1 x_2
10 110 126 112
11 131 140 143
12 130 128 116
13 118 150 125
14 102 117 110
15 103 105 148
16 116 114 114
17 120 132 110

.. 和第二个数据框 (df2) 像:

索引 x_1 x_2 x_3
10 1 1 5
11 4 1 2
14 2 2 4
15 1 2 1
16 2 4 1

最终结果将是 df3,即:

索引 x_1 x_2 x_3
10 126 112 110
11 140 143 131
14 117 110 102
15 105 148 103
16 114 114 116

有什么见解吗?

解决方法

您可以根据index和{{1}使用.reindex_like来符合columns的{​​{1}}和df1 index 的}:

columns

df2
,
df1.loc[df2.index,df2.columns]

Shubham 的回答非常pythonic。使用 loc 也是从首要原则出发的一种简单方法。