我有两个数据框:
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中的某些值,反之亦然.如果是这样,哪些?
我尝试使用合并和连接,但这不是我想要的.
我编辑了原始数据,以说明一个数据帧中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键df1
和df2
:
# 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