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

如何匹配字典值与DataFrame的Link列并生成对应键列,实现分组求和透视

解决方案

1. 修复字典格式并建立反向映射

原字典的值是字符串形式的列表,先将其转换为实际列表,再创建链接→样本的反向字典,方便快速查找匹配:

# 处理字典,生成Link到Sample的映射表
link_to_sample = {}
for sample, links_str in d.items():
    # 去除首尾括号、分割字符串并清理空格,得到真实链接列表
    links = [link.strip() for link in links_str.strip('[]').split(',')]
    for link in links:
        link_to_sample[link] = sample

2. 新增Parent列

用map方法快速完成匹配,比apply更高效:

df['Parent'] = df['Link'].map(link_to_sample)

处理后DataFrame的Parent列会正确显示对应样本:

LinkTown1Town2Town3Town4Parent
A10.1240520.6055730.4168750.068305Sample1
B20.9396120.5617370.3215440.280721Sample3
X70.8613380.4795670.1243930.600126Sample2
8G0.9810170.4763710.0978940.930973Sample2

3. 按Parent分组求和

通过groupby+sum生成目标透视表:

result = df.groupby('Parent')[['Town1', 'Town2', 'Town3', 'Town4']].sum()

最终结果:

ParentTown1Town2Town3Town4
Sample10.1240520.6055730.4168750.068305
Sample21.8423550.9559390.2222871.531100
Sample30.9396120.5617370.3215440.280721

原代码错误分析

  • get_key函数中循环df['Link']覆盖了传入的node参数,逻辑完全混乱
  • 判断node in d.values()是检查节点是否存在于字符串形式的列表中,即使匹配成功也无法返回对应单个样本键,而是返回所有键的视图,完全不符合需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:40:41