如何比较两个不同数据帧的列并保持公共值

时间:2019-07-26 11:51:35

标签: python pandas dataframe

我有两个具有相同列但值不同的数据帧,其中有些是相同的,有些是不同的。我想比较两列并保留通用值。

df1

  A B C
  1 1 1
  2 4 6
  3 7 9
  4 9 0
  6 0 1

df2

  A D E
  1 5 7
  5 6 9
  2 3 5
  7 6 8
  3 7 0

这是我期望比较后得到的结果

df2

  A D E
  1 5 7
  2 3 5
  3 7 0

1 个答案:

答案 0 :(得分:1)

您可以使用pd.Index.intersection()查找匹配的列,最后进行内部合并reindex()来保留df2.columns

match=df2.columns.intersection(df1.columns).tolist() #finds matching cols in both df
df2.merge(df1,on=match).reindex(df2.columns,axis=1) #merge and reindex to df2.columns

   A  D  E
0  1  5  7
1  2  3  5
2  3  7  0