统计两个DataFrame同列重复值出现次数的代码问题排查
问题排查与解决方案
错误原因
你代码里的核心问题是:在pandas的Series对象上使用in操作符时,它默认检查的是元素是否存在于Series的索引中,而不是Series的值里。df2['Col 1']的索引是[0,1,2],所以你循环的'a'、'b'、'c'都不在这个索引集合里,导致判断条件始终为False,最终count结果为0。
正确实现方式
方法1:转换为集合后判断(适合小数据量循环场景)
把目标列的值转换成Python集合,集合的in操作会直接检查值是否存在,同时提升判断效率:
count = 0 # 先把df2的Col 1值转成集合 target_set = set(df2['Col 1']) for row in df1['Col 1']: if row in target_set: count += 1 print("Count:", count)
方法2:使用pandas向量化操作(推荐,高效无循环)
利用pandas内置的isin()方法实现向量化判断,再通过sum()统计符合条件的数量,这是pandas推荐的高效写法,尤其适合大数据量:
# isin()返回布尔Series,sum()自动将True视为1、False视为0求和 count = df1['Col 1'].isin(df2['Col 1']).sum() print("Count:", count)
内容的提问来源于stack exchange,提问作者E_Sarousi
相关产品推荐
相关产品推荐

