当前位置:  开发笔记 > 编程语言 > 正文

Python:如何比较两个数据帧

如何解决《Python:如何比较两个数据帧》经验,为你挑选了1个好方法。

我有两个数据框:

df1

A1    B1
1     a
2     s
3     d

df2

A1    B1
1     a
2     x
3     d

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

    df1和df2中哪些行相对于列B1不同?

    如果A1列的值不匹配.例如,df2是否缺少df1中的某些值,反之亦然.如果是这样,哪些?

我尝试使用合并和连接,但这不是我想要的.



1> Alexander..:

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

在进行合并时,您需要指定"外部"合并,以便您可以在一个数据框中看到这些项目,但在另一个数据框架中却看不到.

我已经包含后缀'_1'和'_2'来表示列的数据帧源(_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

检查缺少的A1键df1df2:

# 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

编辑 感谢@EdChum(所有熊猫知识的来源......).

df3 = df1.merge(df2, how='outer', on='A1', suffixes=['_1', '_2'], indicator=True)
df3['check'] = df3.B1_1 == df3.B1_2

>>> df3
   A1 B1_1 B1_2      _merge  check
0   1    a    a        both   True
1   2    b    d        both  False
2   3    c    c        both   True
3   4    d  NaN   left_only  False
4   5  NaN    e  right_only  False

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有