You need to enable JavaScript to run this app. 如何检查pandas Series值是否出现在另一DataFrame的对应行中
优惠活动
大模型
产品
解决方案
定价
更多

如何检查pandas Series值是否出现在另一DataFrame的对应行中

问题根因

错误是因为你在实际运行的代码中,给series.values == df额外套了一层多余的方括号:
原正确示例中的写法是np.sum(s.values == df, axis=1) >0,但你实际运行的是np.sum([series.values==df], axis=1) >0,外层多出来的[]会给原本shape为(行数, 列数)的布尔矩阵新增一个维度,变成(1, 行数, 列数)的三维数组,求和时的维度逻辑完全错乱,触发了pandas的长度校验错误。

优化解决方案

推荐直接使用pandas原生方法实现需求,不仅写法更简洁,还能自动处理NaN的等值判定(原生==会认为NaN == NaN结果为False,eq方法会判定为True,符合你示例中NaN行的匹配预期):

# axis=0表示按行对齐Series和DataFrame的索引做元素级比较
# any(axis=1)表示判断每行是否存在至少一个匹配项
mask = df.eq(series, axis=0).any(axis=1)

如果要保留你原来的numpy写法,只需要去掉外层多余的方括号即可:

mask = np.sum(series.values == df, axis=1) > 0
  • 注意:如果你的数值是浮点计算生成的,存在精度误差风险,可以用以下方式做近似匹配:
mask = np.isclose(df, series.values[:, None], equal_nan=True).any(axis=1)
效果验证

以你给出的示例数据为例,最终生成的mask最后4行会返回True,完全符合预期。

内容的提问来源于stack exchange,提问作者user3062260

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 07:06:02