首页 > 解决方案 > 如何编写一个计算两列不同大小的相同和不同 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

标签: pythonpython-3.xpandas

解决方案


你可以试试.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 允许对数字求和。


推荐阅读