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

如何在Python中使用字典作为DataFrame分组聚合的参数?

在Python中用字典值作为DataFrame groupby和agg的参数

你原代码的问题在于:groupby()需要的是列名的序列(列表、元组等),直接传入字典a会导致分组逻辑错误;而agg()需要的是{列名: [聚合函数]}的结构,把字典b作为键显然不符合要求。

正确实现方式

提取字典的values()作为参数即可,以下是完整示例:

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'experience_level': ['EN', 'MI', 'SE', 'EN', 'MI'],
    'job_title': ['Data Analyst', 'Data Scientist', 'Data Engineer', 'Data Analyst', 'Data Scientist'],
    'salary': [50000, 80000, 100000, 55000, 85000]
})

# 定义存储列名的字典
a = {"1": "experience_level", "2": "job_title"}
b = {"1": "salary"}

# 提取字典值作为groupby和agg的参数
grouped_multiple = df.groupby(list(a.values())).agg({list(b.values())[0]: ['mean', 'min', 'max']})
print(grouped_multiple)

多列通用写法

如果字典b包含多个列名,可以用字典推导式生成通用的聚合配置:

# 示例:b包含多个列
b = {"1": "salary", "2": "bonus"}

# 自动生成聚合字典
agg_dict = {col: ['mean', 'min', 'max'] for col in b.values()}
grouped_multiple = df.groupby(list(a.values())).agg(agg_dict)

关键说明

  • list(a.values()) 将字典a的值转换为分组列名列表,等价于硬编码的['experience_level', 'job_title']
  • 对于agg(),需要将字典b的值作为键,对应聚合函数列表,确保符合{列名: 聚合函数/列表}的参数格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:42:44