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

Pandas 如何按名称分组筛选不含wikipedia.org链接的企业数据

实现方案

你之前遇到的卡点核心是对groupby的使用场景存在误解:groupby 并非必须配套聚合操作才能使用,除聚合统计场景外,它还支持通过filter方法按组规则直接过滤原始数据,不需要产出聚合结果即可完成组级筛选。

操作步骤

  • 逐行判断当前URL是否包含"wikipedia.org",生成临时判断标记
  • 按企业名称分组,保留所有关联URL均不含目标域名的企业分组
  • 提取符合条件的企业名称,转换为目标列表格式

可直接复用的代码

第一步:生成逐行URL匹配标记

# 对域名中的点做正则转义,避免匹配误差
df['has_wiki'] = df['url'].str.contains(r'wikipedia\.org', na=False)

注:na=False 会将URL缺失值默认判定为不包含维基链接,避免空值干扰判断逻辑。

方法一:用groupby的filter方法直接筛选(无需额外聚合计算)

# 按企业名分组,过滤规则:组内不存在任何带维基链接的记录
filtered_df = df.groupby('name').filter(
    lambda group: not group['has_wiki'].any()
)
# 提取去重后的企业名,生成目标格式列表
result = filtered_df['name'].unique().tolist()

这种方式不需要额外计算聚合统计值,直接输出符合条件的原始数据行,完全适配需求。

方法二:先做聚合统计再反向筛选

# 按企业分组,聚合计算每个企业是否至少存在1条维基链接
name_wiki_flag = df.groupby('name')['has_wiki'].any().reset_index()
# 筛选出无维基链接的企业,转成列表
result = name_wiki_flag.loc[name_wiki_flag['has_wiki'] == False, 'name'].tolist()

输出效果

当数据中存在如1-800-Flowers这类所有关联URL都不含维基链接的企业时,最终生成的result会输出为类似['1-800-Flowers']的列表格式,和预期一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 20:54:04