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

如何在Pandas中生成布尔列:判断行是否含指定列表字符串

问题排查与修正方案

原代码可能的报错原因

  • 非字符串/空值问题:如果clean_df['sentence']列存在NaN、None或者数字等非字符串类型值,执行st in x时会触发TypeError,因为无法在非字符串对象中查找子串。
  • 写法冗余:any()本身返回布尔值,没必要额外套三目运算符。

修正后的代码方案

方案1:兼容空值与非字符串类型的apply写法

# 先统一转换为字符串并填充空值,避免类型错误
clean_df['sentence'] = clean_df['sentence'].astype(str).fillna('')
# 简化逻辑,直接返回any的结果
clean_df['to_process'] = clean_df['sentence'].apply(lambda x: any(st in x for st in ['foo', 'box']))

方案2:更高效的矢量化写法(推荐)

Pandas的str.contains是矢量化操作,比apply效率更高,适合大数据集:

# 先处理类型与空值
clean_df['sentence'] = clean_df['sentence'].astype(str).fillna('')
# 用正则匹配多个关键词,case=False可忽略大小写(按需添加)
clean_df['to_process'] = clean_df['sentence'].str.contains('foo|box', case=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:30:49