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

Pandas布尔索引筛选:判断model/brand是否包含于name列的问题

问题分析与解决方案

核心问题:你的name、brand、model列被错误识别为数值类型(int64/float),且存在缺失值(报错中的float提示说明数据里有NaN),导致所有字符串相关操作失效。以下是分步解决方法:

1. 修复数据类型并处理缺失值

先把这三列强制转换为字符串类型,同时将缺失值(NaN)替换为空字符串,避免后续操作报错:

# 转换列类型为字符串,替换NaN为空字符串
autos[['name', 'brand', 'model']] = autos[['name', 'brand', 'model']].astype(str).replace('nan', '')

2. 实现每行的model包含判断

转换类型后,用apply逐行判断model是否在name中,这是符合你需求的正确方式:

model_in_name = autos.apply(lambda x: x['model'] in x['name'], axis=1)

执行后会得到你预期的布尔序列:

0     True
1     True
2     True
3     True
4     True
5    False
dtype: bool

之前报错的原因解释

  • 报错1:autos["name"].str.contains(autos["model"])
    str.contains的参数需要是单个字符串或正则表达式,传入整个Series会触发哈希错误,因为Series是可变对象,无法被哈希。
  • 报错2/3:apply时的类型错误
    你的列是数值类型(int64/float),数值不能用in操作判断“包含关系”,转换为字符串后即可正常使用in。
  • 报错4:"|".join(autos["model"])
    join要求所有元素都是字符串,但你的model列存在float类型的NaN,导致拼接失败。而且这个方法本身逻辑错误——它是判断name包含任意一个model,而非当前行的model,不符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 10:52:16