通过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')))]
我想合并 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')))]