通过how='inner'合并两个具有共同列名的df

Merge two df with common column names by how='inner'

我想合并 dfa 和 dfb 以创建 df_merged,但我想合并两者共有的列,而不是像 A_x 和 [=38= 这样的列] 已创建。

dfa

    Name      A    B   C
0   Angel     1    2   3
1   Miguel    3    5   2
2   Rose      5    4   2
3   Gabe      3    5   3

dfb

    Name      A    B    D
0   Angel     1    2   53
1   Miguel    3    5   45
2   Fer       4    7   24
3   Gras      1    6   21

预计df_merge

    Name      A    B   C   D
0   Angel     1    2   3  53
1   Miguel    3    5   2  45

我用df_merge = dfa.merge(dfb,how="inner", on="Name")

但我得到了

    Name      A_x   B_x   C   A_y  B_y   D
0   Angel     1      2    3    1    2   53
1   Miguel    3      5    2    3    5   45

我一直在阅读类似的问题,但我没有解决问题的方法。这只是我数据的摘录

由于两个数据框中的列完全相同,因此您有一个副本。您可以做的是向第二个数据框的列添加一个公共后缀,并在合并后删除具有这些后缀的列。

dfc = dfa.merge(dfb,how="inner", on="Name", suffixes=(False,'_drop'))

现在只需删除其中包含单词 _drop 的列。

dfc = dfc[dfc.columns.drop(list(dfc.filter(regex='_drop')))]