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

pandas中如何匹配索赔号对应零件号、统计频次并生成指定格式字典

Pandas大表匹配与字典构建实现方案

全程采用pandas向量化操作,避免逐行遍历,适配百万/千万行级别的大表场景,执行效率远高于循环、apply类写法。

前置变量约定

  • 原始3列大表名:df
  • 70个随机抽取的保修索赔号存储列表:target_claim_list

步骤1:匹配目标索赔号对应的零件号

利用isin做向量化筛选,结合去重逻辑规避脏数据干扰:

# 筛选目标行,提取索赔号-零件号的映射关系
claim_part_map = df.loc[
    df['warranty_claim_number'].isin(target_claim_list),
    ['warranty_claim_number', 'key_part_number']
].drop_duplicates(subset=['warranty_claim_number'])

步骤2:统计零件号全局出现次数

用value_counts直接统计全表每个key_part_number的出现频次,是pandas场景下统计频次性能最优的写法:

# 返回Series,索引为key_part_number,值为对应全表出现次数
part_occur_count = df['key_part_number'].value_counts()

步骤3:构建目标字典

按照要求格式(键为零件号出现次数,值为对应保修索赔号)构建字典:

# 给映射表匹配每个零件号对应的出现次数
claim_part_map['occur_cnt'] = claim_part_map['key_part_number'].map(part_occur_count)

# 生成最终字典
result_dict = dict(zip(claim_part_map['occur_cnt'], claim_part_map['warranty_claim_number']))

特殊场景兼容

如果70个索赔号中存在多个索赔号对应零件号的全局出现次数完全相同,字典键的唯一性会导致后写入的索赔号覆盖之前的值。如果需要保留同频次下的所有索赔号,可以替换步骤3的代码为如下版本:

from collections import defaultdict

result_dict = defaultdict(list)
for _, row in claim_part_map.iterrows():
    result_dict[row['occur_cnt']].append(row['warranty_claim_number'])
# 转成普通字典
result_dict = dict(result_dict)

此时输出的字典值为列表结构,会存储同一出现次数下对应的所有索赔号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:15:41