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

如何缩减Pandas DataFrame行数?XML站点地图数据处理遇阻

解决站点地图词频数据量过大的问题

1. 修复Slug提取逻辑(核心根源)

你当前的Slug提取逻辑和注释描述完全不符——所有Slugs都只处理了不以/结尾的URL,还错误地把每个URL的倒数两段都拆出来合并,这直接导致大量冗余文本片段生成,是数据量暴增的主要原因。

正确的提取逻辑应该严格匹配你的注释:

  • 对以/结尾的URL,取倒数第二部分作为Slug
  • 对不以/结尾的URL,取最后一部分作为Slug

修改后的代码:

import advertools as adv
import pandas as pd

site = "https://www.halfords.com/sitemap_index.xml"

sitemap = adv.sitemap_to_df(site)
sitemap = sitemap.dropna(subset=["loc"]).reset_index(drop=True)

# 区分两种URL类型提取Slug
slash_end = sitemap['loc'].str.endswith('/')
# 处理以/结尾的URL,取倒数第二部分
slugs_slash = sitemap.loc[slash_end, 'loc'].str.split('/').str[-2].str.replace('-', ' ')
# 处理不以/结尾的URL,取最后一部分
slugs_no_slash = sitemap.loc[~slash_end, 'loc'].str.split('/').str[-1].str.replace('-', ' ')

# 合并正确的Slug列表
slugs = pd.concat([slugs_slash, slugs_no_slash]).tolist()

2. 缩减词频数据的实用方案

方法一:过滤低频次Ngram

只保留出现次数达到阈值的词/短语,比如只保留出现≥5次的内容:

word_counts_onegram = adv.word_frequency(slugs)
word_counts_twogram = adv.word_frequency(slugs, phrase_len=2)

competitor = pd.concat([word_counts_onegram, word_counts_twogram])\
    .rename({'abs_freq':'Count','word':'Ngram'}, axis=1)\
    .query('Count >= 5')\  # 过滤低频次条目
    .sort_values('Count', ascending=False)

方法二:只保留核心Ngram类型

如果不需要同时保留单字和双字词,可以二选一(双字词通常更具实际业务意义):

# 仅生成双字词频统计
word_counts_twogram = adv.word_frequency(slugs, phrase_len=2)
competitor = word_counts_twogram.rename({'abs_freq':'Count','word':'Ngram'}, axis=1)\
    .sort_values('Count', ascending=False)

方法三:去重重复Ngram

合并单字和双字词后可能存在重复统计项,可按Ngram去重,保留最高频次的条目:

competitor = pd.concat([word_counts_onegram, word_counts_twogram])\
    .rename({'abs_freq':'Count','word':'Ngram'}, axis=1)\
    .sort_values('Count', ascending=False)\
    .drop_duplicates(subset='Ngram', keep='first')  # 按Ngram去重,保留次数最多的记录

3. 额外优化:提前过滤无效URL

站点地图可能包含图片、静态资源等非核心页面URL,可提前过滤:

# 只保留包含产品/分类特征的URL(根据实际业务调整关键词)
valid_urls = sitemap[sitemap['loc'].str.contains('product|category', case=False)]
sitemap = valid_urls.dropna(subset=["loc"]).reset_index(drop=True)

内容的提问来源于stack exchange,提问作者Simone De Palma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 16:01:07