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

Python DataFrame列如何正确过滤掉不包含‘.’的记录

问题原因

pandas的str.contains()方法默认启用正则表达式匹配规则,字符.在正则语法中是通配符,代表匹配任意单个非换行字符,而非匹配字面量的点号。同时你原有代码额外增加了取反符~,逻辑完全不符合需求,因此最终结果会保留大量不含.的记录。

正确实现方案

以下写法均可以实现「保留Domain列包含.的记录、过滤掉不含.的记录」的需求:

  • 方案1:对正则中的点号做转义处理
df = df[df['Domain'].str.contains(r'\.')]
  • 方案2:禁用正则匹配,直接匹配字面量点号(可读性更高)
df = df[df['Domain'].str.contains('.', regex=False)]
  • 健壮版优化(适配Domain列存在NaN的场景,避免布尔索引报错):
# NaN值会被视为不包含`.`,直接过滤
df = df[df['Domain'].str.contains('.', regex=False, na=False)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:15:02