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

Pandas按sid分组筛选url含全部指定子串的分组数据实现方法

Pandas实现代码

该需求可以直接用pandas的分组过滤方法实现,逻辑简洁且效率较高:

第一步:导入依赖与构造测试数据

import pandas as pd

# 构造测试数据集
data_dict = {
    'vid': {1:'A',2:'A',3:'A',4:'A',5:'B',6:'B',7:'B',8:'C'},
    'sid': {1:'A1',2:'A1',3:'A1',4:'A1',5:'B1',6:'B2',7:'B2',8:'C1'},
    'pid': {1:'page',2:'page',3:'page',4:'page',5:'page',6:'page',7:'page',8:'page'},
    'url': {1:'ABCDEF',2:'DEF123',3:'GHI345',4:'JKL345',5:'AB12345EF',6:'IJK',7:'XYZ',8:'ABCEF'}
}
df = pd.DataFrame(data_dict)

# 待匹配子串列表
lst = ['AB', 'EF']

第二步:核心过滤逻辑

使用groupby.filter方法直接对分组做整体过滤:

result_df = df.groupby('sid').filter(
    lambda x: x['url'].apply(lambda url: all(sub in url for sub in lst)).any()
)

逻辑说明

  • 首先按照sid字段对整个DataFrame做分组
  • 对每个分组,遍历所有url值,判断单个url是否包含lst中的全部子串
  • 只要分组内存在至少1个符合要求的url,就保留该分组的全部行,否则直接剔除整个分组
  • 最终输出的result_df和你给出的预期结果完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:36:04