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

如何筛选DataFrame中同时含指定子串且无禁用子串的行

解决方法

我们通过逐行匹配三个规则即可完成筛选,Pandas实现代码如下:

import pandas as pd

# 指定需要做子串匹配的列,这里排除数值列cap
check_cols = ['1', '2', '3', '4']

# 规则1:行内存在包含Coin子串的单元格
has_coin = df[check_cols].apply(lambda s: s.str.contains('Coin', na=False)).any(axis=1)
# 规则2:行内存在包含Charge子串的单元格
has_charge = df[check_cols].apply(lambda s: s.str.contains('Charge', na=False)).any(axis=1)
# 规则3:行内不存在包含Bill、Other子串的单元格
no_invalid = ~df[check_cols].apply(lambda s: s.str.contains('Bill|Other', na=False)).any(axis=1)

# 同时满足三个规则的行即为最终结果
df_res = df[has_coin & has_charge & no_invalid]

代码说明

str.contains的na=False参数会直接将空单元格判定为不匹配目标子串,正好符合需求中空值允许的要求。Bill|Other是正则语法,表示匹配两个子串中的任意一个,不需要额外写两次匹配逻辑。

运行后得到的结果与示例完全一致:

>>> df_res
        1       2 3 4  cap
2  Charge    Coin        1
5    Coin  Charge        8
8  Charge    Coin       15

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:36:00