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

如何根据列中文本内容筛选DataFrame?求高效通用代码

高效筛选包含指定文本的DataFrame行

针对你处理大数据集的需求,这里推荐使用pandas内置的矢量化字符串匹配方案,它底层基于C实现,比手动循环效率高几个数量级,同时代码简洁通用。

完整实现代码

import pandas as pd

# 初始化原始DataFrame
saf_data = {'col1': ['U1', 'U2', 'U3', 'U4'], 'col2': ['1', '2|6', '4a|6a', '6b']}
saf_df = pd.DataFrame(saf_data)

# 核心筛选逻辑:保留col2中包含"6"的行
filtered_df = saf_df[saf_df['col2'].str.contains('6', na=False)]

# 如果只需要提取col1的列表结果
col1_result_list = filtered_df['col1'].tolist()

# 输出验证
print("筛选后的DataFrame:")
print(filtered_df)
print("\ncol1对应的列表:")
print(col1_result_list)

代码说明

  • 高效性:str.contains是pandas矢量化操作,直接对整列数据批量处理,避免了Python层面的循环遍历,在大数据集上性能优势极其明显。
  • 通用性:
    • na=False参数:处理数据中可能存在的缺失值(NaN),避免因缺失值导致筛选结果出现异常;
    • 如果需要大小写不敏感的匹配,可以添加case=False参数;
    • 如果需要更精准的正则匹配(比如仅匹配独立的"6"而非包含"6"的子串),可以传入正则表达式,例如str.contains(r'\b6\b', na=False)。

预期输出

筛选后的DataFrame:

col1    col2
1   U2     2|6
2   U3  4a|6a
3   U4     6b

col1对应的列表:
['U2', 'U3', 'U4']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:55:56