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

如何在Pandas的所有DataFrame列上应用str.contains方法?

解决DataFrame调用str.contains报错的问题

错误原因

str是Pandas单列(Series)的专属属性,你直接在整个DataFrame上调用.str,必然会触发AttributeError——因为DataFrame本身没有这个属性。

实现需求的方法

要对DataFrame的所有列批量应用str.contains,可以用apply方法遍历每一列(每一列本质是一个Series),再对每个Series调用str.contains:

# 把features列表拼接成正则匹配用的字符串
match_pattern = '|'.join(features)
# 对DataFrame每一列执行str.contains
data3 = data2.apply(lambda col: col.str.contains(match_pattern, na=False))
  • 参数na=False是用来处理列中的空值(NaN),避免结果里出现NaN,你可以根据实际数据情况调整这个参数。
  • 如果你的DataFrame里有非字符串类型的列,建议先把列转为字符串类型再匹配,避免类型错误:
    data3 = data2.apply(lambda col: col.astype(str).str.contains(match_pattern, na=False))
    

可选优化:仅处理字符串列

如果只需要对DataFrame中的字符串类型列操作,可以先筛选出目标列再处理:

# 筛选出字符串类型的列
string_columns = data2.select_dtypes(include=['object', 'string']).columns
# 仅对这些列执行匹配
data3 = data2[string_columns].apply(lambda col: col.str.contains(match_pattern, na=False))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:32:17