python - Pandas 在比较 2 个数据帧时如何检查行来自哪个数据帧?
问题描述
我有以下代码比较 2 个数据帧中的 2 列,它实际上返回两个数据帧中不同的行,但我想获得不同的行,例如df1
两者都不同:
df1 = pd.DataFrame([('a','b','src'), ('a','b','src'), ('c','b','src'),('a','d','src')],columns=['col1','col2','origin'])
df2 = df1.copy(deep=True)
df2['origin'] = 'tgt'
df1['col1'][3] = 't'
df2['col2'][2] = 't'
df1[(df1['col1'] != df2['col1']) | (df1['col2'] != df2['col2'])]
现在,在这里我确实看到了 2 个差异,但原始列始终是src
. 我想要的是,不同但仅来自源的行数,即df1
解决方案
因为两个 s 中的相同列和相同索引DataFrame
,所以可以在它们之间进行比较。
在布尔掩码中检查不等于df1
并且还df2
需要s:sum
True
mask = (df1['col1'] != df2['col1']) | (df1['col2'] != df2['col2'])
print (mask)
0 False
1 False
2 True
3 True
dtype: bool
out = mask.sum()
print (out)
2
推荐阅读
- google-apps-script - 通过 PropertiesService 在 Google Apps 脚本中存储和检索选择元素
- arrays - 如何将数据插入到一个空数组并依次显示在标签中的文本字段中?
- asp.net-mvc - 对模型属性的验证不会为字符串长度生成错误消息
- laravel - [Vue 警告]:渲染错误:Vue.js 中的“TypeError:this.input.reduce 不是函数”
- google-apps-script - 将行添加到过滤范围
- php - 我的代码没有从我的网站发送电子邮件
- drupal-7 - 按日期查看结果组并计算一个月的结果
- javascript - 如何从输入中获取数值?
- docusignapi - 信封中可点击的超链接文本
- redis - jedis 没有释放连接/jedis 泄漏连接/jedis 连接池随着时间的推移耗尽