Python/Pandas:根据另一个数据框过滤和组织数据框的行和列

Python/Pandas: filter and organize the rows and columns of a dataframe based on another dataframe

我有两个数据帧,例如下面的 df1、df2。 我愿意:

数据帧 df1 是:

index 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)如:

index 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,即:

index 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

有什么见解吗?

您可以使用.reindex_like根据index来符合df1indexcolumnscolumnsdf2:

df3 = df1.reindex_like(df2)

>>> df3

       x_1  x_2  x_3
index               
10     126  112  110
11     140  143  131
14     117  110  102
15     105  148  103
16     114  114  116
df1.loc[df2.index, df2.columns]

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