python - 如何编写一个计算两列不同大小的相同和不同 ID 的函数
问题描述
给定一列“ID”(50,000 行)的参考数据帧 A,以及数据帧 B、C、D,其“ID”列分别为 45,000 行、55,000、70,000 行,“ID”的每个实例都很大( 17 位)整数值,在所有列中具有许多相同的值,但不一定在同一行中。
如何编写一个函数来计算其中两列中相同值和不同值的数量?
列:
A ['ID', 196, 202, 443, 781, 557]
B ['ID', 781, 488, 712, 202, 482, 311]
C ['ID', 889, 196, 302, 444]
D ['ID', 444, 202, 675]
输入:A,B
输出:匹配:2 差异:3
解决方案
你可以试试.isin()
。pd.Series 示例:
A = pd.Series([196, 202, 443, 781, 557])
B = pd.Series([781, 488, 712, 202, 482, 311])
if len(A) >= len(B):
matches = A.isin(B)
else:
matches = B.isin(A)
mismatches = ~matches
print('matches: {}, mismatches: {}'.format(sum(matches), sum(mismatches))
比较长度以便找到正确数量的不匹配。当然,找到正确数量的匹配并不重要。将 True 解释为 1 并将 False 解释为 0 允许对数字求和。
推荐阅读
- python - 随机生成的字符串 - 没有重复
- ionic-framework - 在 Ionic 5 中静音来自 ApiRTC 的视频流
- swift - 如何使用 AudioKit 编写一个从键盘打印所有 MIDI 音符的 Mac 命令行应用程序?
- javascript - 如何在 JavaScript 中格式化用户输入时间格式?
- node.js - Multer 将图像上传到节点 js 服务器(Github 作为存储)
- python - 找不到 keras 模块(没有名为“keras”的模块)
- node.js - 如何使用 IIS URL Rewrite 将 http 转发到 https node.js 应用程序?
- bash - awk 内联命令和完整脚本有不同的输出
- python - 是否可以从 html 中提取“标题”而不是“类”或“id”来打印鼠标悬停时出现的内容?
- javascript - 状态码 405(不允许的方法)试图将画布保存到数据库中