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

如何重构嵌套字典以实现Pandas DataFrame的重命名与聚合?

问题:如何重构嵌套字典以适配Pandas的rename方法,实现列重命名与分组求和?

现有嵌套字典:

groupings = {'Group_A':{'species':['plantain', 'banana'], 'shape':'oblong'},
'Group_B':{'species':['lemon', 'orange'], 'shape':'round'}
}

以及Pandas DataFrame(注:修正原代码拼写错误,pd.dataframe改为pd.DataFrame,列名bannana改为banana以匹配字典):

import pandas as pd
d = pd.DataFrame(data={'orange': [1, 2], 'banana': [3, 4], 'lemon': [3, 4]})

需求是基于该字典对DataFrame列重命名后分组求和,预期输出:

Group_A  Group_B
0        3        4
1        4        6

解决方案:将嵌套字典转为扁平映射字典

Pandas的DataFrame.rename()方法的columns参数仅接受单层键值对字典(键为原列名,值为新列名),无法直接识别嵌套结构。因此需要将原嵌套字典重构为扁平的列名-分组名映射:

1. 构建扁平映射字典

遍历原嵌套字典,提取每个物种对应的分组名:

rename_map = {}
for group_name, group_details in groupings.items():
    for species in group_details['species']:
        rename_map[species] = group_name

生成的rename_map为:

{'plantain': 'Group_A', 'banana': 'Group_A', 'lemon': 'Group_B', 'orange': 'Group_B'}

2. 执行重命名与分组求和

使用该映射字典完成列重命名,再按列分组求和:

# 重命名列
d.rename(columns=rename_map, inplace=True)
# 按分组名分组并求和
d = d.groupby(by=d.columns, axis=1).sum()

print(d)

执行后即可得到预期输出。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:22:18