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

Python中如何从pandas DataFrame中批量移除指定URL

pandas 移除DataFrame内逗号分隔单元格中指定URL的方案

你贴的示例代码有三个明显问题:列名拼写不一致(代码里写的url2和实际列名urls2不符)、直接拿整列值做整串替换匹配不到逗号分隔的单个URL、没处理URL前后的空格导致匹配漏判。

核心思路

  • 先把所有要移除的URL整理成集合结构,成员判断效率远高于列表,适合大体量数据
  • 逐列逐单元格处理:把逗号分隔的URL字符串拆成单个URL,逐个清理首尾空格后过滤掉命中移除名单的项,剩下的内容再用逗号拼接回字符串
  • 空值单独判断跳过,避免转字符串的时候出问题

可直接复用的代码

import pandas as pd

# 测试数据
df = pd.DataFrame({
    'urls':['https://pippo.it, https://pluto.it', 'http://blah.com'], 
    'urls2':['http://blah.net', 'https://pippo.it, https://pluto.it']
})

# --------------------------
# 配置要移除的URL,两种方式选一种即可
# 方式1:手动指定要移除的URL集合
blocked_urls = {'https://pippo.it', 'https://pluto.it'}

# 方式2:从DataFrame的指定存储黑名单的列(示例用urls2列)自动提取所有待移除URL,自动拆分逗号分隔的多值
# blocked_urls = set()
# # 先跳过空值避免报错
# for cell in df['urls2'].dropna():
#     for url in str(cell).split(','):
#         cleaned_url = url.strip()
#         if cleaned_url:
#             blocked_urls.add(cleaned_url)

# 遍历所有列做过滤,如果只需要处理部分列,把df.columns改成对应列名的列表即可
for col in df.columns:
    df[col] = df[col].apply(
        lambda x: ', '.join([
            url.strip() 
            for url in str(x).split(',') 
            if url.strip() not in blocked_urls
        ]) if pd.notna(x) else x
    )

print(df)

运行效果

用方式1(手动指定移除https://pippo.it、https://pluto.it)的话,最终输出的DataFrame如下:

urlsurls2
(空字符串)http://blah.net
http://blah.com(空字符串)

小提示:如果不需要过滤存储待移除URL的列本身,遍历列的时候把这个列排除即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 00:39:18