python - 比较不同数据框的多列 | 熊猫
问题描述
我有两个具有相同列的数据框。我想生成一个新的 df ,其中数据框中的列之间的数据不同。像这样: 注意,我已经做了一些预处理,例如:
- df1 中的所有 id 都存在于 df2 中;df2 中的所有 id 都存在于 df1 中
- 没有 NA/NAN 值。
- 所有单元格都是最小长度为 1 和最大长度为 3500 的字符串。
- 需要比较的列的名称存储在列表中。
我不确定如何获取这些细粒度信息,我尝试遍历每一列并生成一个数据框。像这样:
for v in col_list:
m_df = pd.merge(df1, df2, on = ['id',v], how = 'outer', indicator=True]).('_merge != "both"')
但是,我不确定如何将这些数据框组合成一个数据框。
该解决方案可以很好地解决我的问题,但我不知道如何根据需要对其进行转换: https ://stackoverflow.com/a/47112033/7987118
解决方案
做就是了df==df2
# module
import pandas as pd
import numpy as np
d=[['v1', 'v3', 'v56', 'sstr'],
['v2', 'v4', 'v34', 'sstr'],
['v3', 'v5', 'v12', ''],
['v4', 'v6', 'v-10', 'sstr'],
['v5', 'v7', 'v-32', 'sstr']]
d2=[['v1', 'v3', 'v56', 'sstr'],
['v234', 'v4adf', 'v34', 'sstr'],
['v3', 'v5asd', 'v12', 'sstr'],
['v4', 'v6', 'asdfasdf', 'sstr'],
['v5', 'v7', 'v-32', 'sstr']]
# datasets
df=pd.DataFrame(d,columns='a b c d'.split())
df2=pd.DataFrame(d2,columns='a b c d'.split())
print(df)
print(df2)
#check
print(df==df2)
# a b c d
#0 True True True True
#1 False False True True
#2 True False True False
#3 True True False True
#4 True True True True
推荐阅读
- java - 即使孩子不在也能获取父母
- azure-devops - 如何正确替换/删除 azure 私人代理
- excel - 单独工作表上调用宏“不起作用”
- json - 如何使用外部数据绘制多线系列图表
- node.js - gnutls_handshake() 失败:关闭通知 - Docker 且仅在一个网络上
- postgresql - 在 psql 中使用 \d 命令的结果
- datacontract - 消费者驱动的合同测试数据库
- php - sql数据不显示在php中
- python - 使用具有特定周期的非空值插入 Dataframe 的列
- git - Git通过删除master中的文件来修复合并冲突,这可能吗?