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

Python中检测DataFrame文本列是否含问号并返回布尔值

解决方法:检查文本列是否包含问号并生成新列

别担心,我来帮你搞定这个需求!要实现逐行检查DataFrame文本列中是否存在问号,并将结果存入新列,用Pandas的矢量化字符串操作最高效,具体步骤如下:

核心代码实现

假设你的DataFrame名为df,需要检查的文本列名为text_column,可以直接用str.contains()方法:

import pandas as pd

# 关键代码:生成新列存储检查结果
df['has_question_mark'] = df['text_column'].str.contains('\?', na=False)

代码解释

  • str.contains('\?'):这里用正则表达式匹配问号,因为?在正则中是特殊字符(表示匹配前面的字符0次或1次),所以必须用反斜杠\转义,确保匹配的是字面意义上的问号。
  • na=False:处理文本列中的缺失值(NaN/None),将这类行的结果统一设为False,如果你的需求是把缺失值标记为True,可以改成na=True。

示例演示

我们用一个示例DataFrame来验证效果:

# 创建示例数据
data = {'text_column': ['你今天吃饭了吗?', '周末打算去爬山', '这个问题怎么解决?', None, '普通陈述句子']}
df = pd.DataFrame(data)

# 添加结果列
df['has_question_mark'] = df['text_column'].str.contains('\?', na=False)

# 查看输出
print(df)

运行后输出如下:

text_column  has_question_mark
0    你今天吃饭了吗?                True
1    周末打算去爬山                False
2  这个问题怎么解决?                True
3           None               False
4    普通陈述句子               False

常见问题排查

如果你之前的代码不符合预期,大概率是这两个原因:

  1. 没有转义问号:直接写str.contains('?')会触发正则的特殊语法,导致匹配错误;
  2. 未处理缺失值:缺失值会返回NaN,而不是True/False,需要用na参数指定处理方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:48:47