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

如何在Pandas列中匹配URL模式并过滤指定网站链接

简便筛选包含指定站点的Pandas URL列

嘿,我懂你要的需求——不用折腾urlparse这类工具,直接从你的URL列里筛选出包含forbes、bloomberg这类标识的链接对吧?这事儿用Pandas自带的字符串处理方法就能轻松搞定,比你之前尝试的写法简单多了,而且效率还高~

核心思路:用str.contains做模糊匹配

Pandas的str.contains方法专门用来检查字符串列里的每个条目是否包含指定的子串,我们可以把目标站点标识拼成一个正则表达式,一次性匹配所有目标:

import pandas as pd

# 第一步:定义你的目标站点标识数组
target_domains = ['forbes', 'bloomberg']
# 把数组转成正则"或"表达式,比如'forbes|bloomberg'
match_pattern = '|'.join(target_domains)

# 第二步:筛选符合条件的行
# case=False:忽略大小写,能匹配FORBES.com、Bloomberg这类混合大小写的链接
# na=False:把空值/非字符串的URL排除,避免报错
filtered_df = df[df['URL'].str.contains(match_pattern, case=False, na=False)]

额外需求:给原表加标记列

如果你不想直接筛选,而是想给每条URL加个“是否属于目标站点”的标记列,可以这么写:

df['is_target_site'] = df['URL'].str.contains(match_pattern, case=False, na=False)

执行后,原DataFrame会新增一列is_target_site,值为True的就是包含目标标识的URL。

为啥你的之前写法不太对?

  • match方法默认是匹配整个字符串的开头,而你要的是URL里任意位置包含站点标识,所以contains才是正确选择;
  • 用apply虽然也能实现,但Pandas的向量化字符串方法(比如str.contains)是底层优化过的,处理大数据集时速度会比apply快很多。

举个实际例子:如果你的URL列有这些值:

  • www.forbes.com/finance/2024
  • bloomberg.com/markets
  • www.cnn.com/world

筛选后会留下前两条,完美符合你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:13:25