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

如何不指定单列,筛选整个DataFrame中包含指定文本的行

解决方案

你可以直接用pandas自带的全表匹配+按行判断逻辑实现,不需要指定任何列名:

完全匹配"Bob"的场景

核心代码只有一行:

filtered_df = df[df.eq('Bob').any(axis=1)]

逻辑说明:

  • df.eq('Bob') 会遍历整个DataFrame的所有单元格,和Bob做等值判断,返回和原DataFrame结构完全一致的布尔值表,匹配到Bob的位置为True,其余为False
  • any(axis=1) 会逐行检查布尔值表,只要某一行存在至少一个True,就给这一行返回True,代表该行符合筛选条件
  • 最后用生成的布尔序列对原DataFrame做行过滤,就能得到所有任意列含Bob的行

模糊匹配包含"Bob"的场景

如果需要匹配单元格内容包含Bob的情况(比如值为Bob Smith也能命中),可以用下面的代码:

filtered_df = df[df.apply(lambda x: x.str.contains('Bob', na=False)).any(axis=1)]

加na=False是为了避免单元格为空时抛出异常。

完整测试示例

你可以用下面的代码验证效果:

import pandas as pd

# 构造你给出的示例DataFrame
df = pd.DataFrame([
    ['Adam', 'Ron', 'Bob', 'Ron'],
    ['Ron', 'Bob', 'Ron', 'Adam'],
    ['Ron', 'Ron', 'Adam', 'Kelly']
], columns=['Name', 'Name', 'Name', 'Name'])

# 筛选
filtered_df = df[df.eq('Bob').any(axis=1)]
print(filtered_df)

运行后输出的结果和你预期的完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:15:03