Python:如何比较两个数据帧

时间:2015-12-08 16:31:16

标签: python pandas dataframe

我有两个数据框:

df1

A1    B1
1     a
2     s
3     d

df2

A1    B1
1     a
2     x
3     d

我想比较B1列上的df1和df2。列A1可用于连接。我想知道:

  1. df1和df2中哪些行相对于列B1?
  2. 如果A1列的值不匹配。例如,df2是否缺少df1中的某些值,反之亦然。如果是这样,哪些?
  3. 我尝试使用合并和加入,但这不是我想要的。

1 个答案:

答案 0 :(得分:7)

我编辑了原始数据,以说明一个数据帧中A1键的情况,但不是另一个数据帧。

进行合并时,您需要指定'外部'合并,以便您可以在一个数据框中看到这些项目的A1键而不是另一个数据帧。

我已经加了后缀' _1'和' _2'指示列No fill from ad server.的数据框来源(_1 = df1和_2 = df2)。

B1

要检查df1 = pd.DataFrame({'A1': [1, 2, 3, 4], 'B1': ['a', 'b', 'c', 'd']}) df2 = pd.DataFrame({'A1': [1, 2, 3, 5], 'B1': ['a', 'd', 'c', 'e']}) df3 = df1.merge(df2, how='outer', on='A1', suffixes=['_1', '_2']) df3['check'] = df3.B1_1 == df3.B1_2 >>> df3 A1 B1_1 B1_2 check 0 1 a a True 1 2 b d False 2 3 c c True 3 4 d NaN False 4 5 NaN e False df1中缺少的A1密钥:

df2

修改 感谢@EdChum(所有熊猫知识的来源......)。

# A1 value missing in `df1`
>>> d3[df3.B1_1.isnull()]
   A1 B1_1 B1_2  check
4   5  NaN    e  False

# A1 value missing in `df2`
>>> df3[df3.B1_2.isnull()]
   A1 B1_1 B1_2  check
3   4    d  NaN  False