You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas isin()处理数值类型时匹配异常问题排查

问题根源

pd.isin()的逻辑是检查左侧元素是否属于右侧序列的顶级元素集合,不会深入遍历右侧元素内部的子列表。

举个实际场景:假设你的value_1是5.0,value_2某行的值是[3.0,5.0],isin()会把这个列表当成一个完整的独立元素,判断5.0是否等于整个列表(显然不相等),所以会错误地把这条记录筛选出来。另外,None也会被当作一个独立元素处理,不会被识别为空集合跳过。

正确实现方法

你需要逐行检查value_1是否存在于对应行的value_2中,先统一value_2的格式(把单个float转为单元素列表,把None转为空列表),再用apply遍历判断:

import pandas as pd

# 标准化value_2的格式,统一转为列表
def normalize_val2(val):
    if val is None:
        return []
    elif isinstance(val, list):
        return val
    else:
        return [val]

# 生成每行的判断掩码:value_1是否在对应行的value_2列表中
mask = df.apply(lambda row: row['value_1'] in normalize_val2(row['value_2']), axis=1)

# 筛选出不符合条件的记录
result = df[~mask]

这样就能准确判断每个value_1是否存在于对应行value_2的元素集合里,不会出现误判。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 00:20:43