python - 将数据框列与条件进行比较
问题描述
我有2个数据框如下:
df1:
ID col1 col2
1 A1 B1
2 A2 B2
3 A3 B3
4 A4 B4
5 A5 B5
6 A6 B6
df2:
col1 col2
A1 B1
A2 O5
H3 B3
A4 B4
A5 66
A6 C6
预期结果:我想根据条件生成结果 df - df1 的 col1、col2 中的每个值都应该存在于 df2 的 col1、col2 值中
预期结果df:
ID col1 col2 Error
1 A1 B1 No mismatch with df2
2 A2 B2 col2 mismatch with df2
3 A3 B3 col1 mismatch with df2
4 A4 B4 No mismatch with df2
5 A5 B5 col2 mismatch with df2
6 A6 B6 col2 mismatch with df2
解决方案
像这样的东西应该可以解决问题,但可能有更简单的方法。
diff = pd.concat([df1[col] == df2[col] for col in df1], axis=1)
def m(row):
mismatches = []
for col in diff.columns:
if not row[col]:
mismatches.append(col)
if mismatches == []:
return 'No mismatch'
return 'Mismatches: ' + ', '.join(mismatches)
df1['Error'] = diff.apply(m, axis=1)
推荐阅读
- amazon-simple-email-service - 如何使用收件人地址别名发送批量模板电子邮件?
- javascript - 当有一些价值时如何使textarea扩展
- keras - tensorflow-lite tf.lite.Interpreter set_tensor 无法正确识别 uint8 输入张量
- ruby-on-rails - 为什么我在部署到 Heroku 后在浏览器中查看我的应用程序时只看到一个空数组?
- plot - 我可以根据计数结果创建图表吗
- python-3.x - 更改为对数比例,同时在 Seaborn 联合图中的两个轴上移动边缘直方图的垂直比例
- tabulator - 制表符,如何仅更新 1 行的 1 个单元格?
- c# - 循环遍历 GTK# 树视图中节点的子节点
- python - 更改目录时自定义文件不起作用
- javascript - 根据在 .html 键盘中按下的修饰键更改数据键值