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

如何用Pandas DataFrame替换字典值并生成含汇总的结构化数据?

简洁实现字典值替换与层级合并的方案

嘿,我明白你想要摆脱繁琐的列表推导式,用更清爽的方式完成需求!下面是一套高效易懂的解决方案,分几步就能搞定:

步骤1:先做个快速映射字典

首先我们把DataFrame里的标识和数值转成一个键值对字典,这样后续替换的时候能直接查表,不用反复去DataFrame里找:

import pandas as pd

# 你的原始输入数据
d = {'X':{'a':['a1'], 'b':['b1']}, 'Y':{'c':['c1','c2'],'d':['d1','d2']}}
df = pd.DataFrame({'variable':['a1','b1','c1','c2','d1','d2'], 'value':[54,67,25,16,34,24]})

# 生成映射字典:key是a1/b1这类标识,value是对应的数值
map_dict = df.set_index('variable')['value'].to_dict()

步骤2:一键处理替换+层级合并

用嵌套字典推导式加上简单的列表扁平化,就能一次性完成内层值替换和顶层的合并计算,逻辑清晰又简洁:

result_dict = {}
for top_key, inner_dict in d.items():
    # 先把内层每个列表的标识替换成对应数值
    mapped_inner = {k: [map_dict[v] for v in vs] for k, vs in inner_dict.items()}
    # 把当前顶层下的所有数值合并成一个列表(扁平化内层所有子列表)
    top_combined = [num for sublist in mapped_inner.values() for num in sublist]
    # 把顶层合并值和处理后的内层项都加入结果字典
    result_dict[top_key] = top_combined
    result_dict.update(mapped_inner)

步骤3:转成目标DataFrame

最后把结果字典直接转换成你需要的DataFrame格式:

final_df = pd.DataFrame(list(result_dict.items()), columns=['category', 'values'])

看看最终输出

打印final_df就能得到完全符合预期的结果:

category          values
0        X        [54, 67]
1        a           [54]
2        b           [67]
3        Y  [25, 16, 34, 24]
4        c        [25, 16]
5        d        [34, 24]

这个方案的好处在于:

  • 用映射字典避免了重复查询DataFrame,效率更高
  • 字典推导式比多层嵌套的列表推导式可读性强很多
  • 顶层合并值用列表扁平化的写法,简洁又直观

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:49:26