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

如何在Pandas的.str.contains()中使用变量实现多条件行筛选?

如何在Pandas的.str.contains()方法中使用变量筛选行?

我查阅过该主题的多篇回答,但未找到适配自身场景的方案:希望在Pandas的.str.contains()方法中指定变量,筛选某列中包含特定固定字符串,或包含预定义变量子串的行,让代码具备灵活性,可生成不同的汇总结果。

示例代码(MWE)

d = {'Column': ['test_string', 'variable_string', 'Letter to the Editor', 'Letter variable_string to the Editor', 'Letter to the Editor']}
df = pd.DataFrame(data=d)

variable = 'variable_string'

# 此写法可行,但硬编码了值,无法灵活修改
df.loc[ df['Column'].str.contains('test_string|variable_string')]

# 以下写法均报错
df.loc[ df['Column'].str.contains('test_string|'variable)]
#SyntaxError: invalid syntax. Perhaps you forgot a comma?

df.loc[ df['Column'].str.contains('test_string'|variable)]
#TypeError: unsupported operand type(s) for |: 'str' and 'str'

可行解决方案

方法1:字符串拼接

直接用+运算符将固定字符串和变量拼接成完整的正则匹配模式:

# 正确写法
df.loc[df['Column'].str.contains('test_string|' + variable)]

方法2:使用f-string(推荐)

Python 3.6及以上版本支持f-string,写法更简洁直观:

df.loc[df['Column'].str.contains(f'test_string|{variable}')]

方法3:处理含正则特殊字符的变量

如果变量中包含.、*、?这类正则表达式特殊字符,需要用re.escape()转义,避免意外匹配:

import re
variable_with_special_chars = 'var*.string'
df.loc[df['Column'].str.contains(f'test_string|{re.escape(variable_with_special_chars)}')]

运行上述正确代码后,会返回包含test_string或变量指定子串的所有行,实现灵活筛选的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 07:12:11