无需循环判断pandas Series值是否存在于DataFrame对应列
无循环实现方案
你可以直接用pandas内置的等值比较+按列聚合实现,全程不需要手动写循环:
# 核心代码 result = df0.eq(df1, axis=1).any().to_numpy()
运行后输出结果完全符合要求:
array([ True, False, True])
原理说明
df0.eq(df1, axis=1):利用pandas的自动对齐特性,将Seriesdf1的每个值和df0的同列所有元素做等值比较,返回和df0同维度的布尔DataFrame.any():默认按列聚合布尔值,只要某列存在至少一个匹配项就返回True.to_numpy():将最终的Series结果转为numpy数组,匹配你需要的输出格式
如果更偏好numpy实现,可以用广播机制完成,大数量级下性能更优:
result = (df0.values == df1.values).any(axis=0)
逻辑和pandas版本完全一致。
内容的提问来源于stack exchange,提问作者user7864386
相关产品推荐
相关产品推荐

