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

如何用Pandas GroupBy为每个分组创建字典?

实现分组生成指定格式字典的方法

首先要明确,df.groupby('diagnosis') 返回的是**(分组名称, 分组子DataFrame)**的元组对,所以循环时需要解构这两个值。以下是完整实现步骤:

1. 示例DataFrame准备(用于测试,可跳过)

先构造一个符合你场景的测试数据:

import pandas as pd

data = {
    'diagnosis': ['dementia', 'dementia', 'dementia', 'control', 'control'],
    'Age': [66, 67, 90, 55, 60],
    'Sex': ['M', 'M', 'F', 'F', 'M'],
    'Weight': [70, 75, 62, 58, 72]
}
df = pd.DataFrame(data)

2. 循环生成目标字典

修改你的循环,解构分组名和子DataFrame,按需求构造字典:

# 可选:存储所有组的字典,按需决定是否保留
group_dicts = []

for group_name, group_df in df.groupby('diagnosis'):
    # 构造目标格式的字典
    group_dict = {
        'Group': [group_name] * len(group_df),  # 生成与子DataFrame行数匹配的分组名列表
        'Age': group_df['Age'].tolist(),
        'Sex': group_df['Sex'].tolist()
        # 如需添加其他变量(如Weight),直接追加对应列的tolist()即可
    }
    group_dicts.append(group_dict)
    # 也可直接在此处处理单个字典,比如打印查看
    print(f"分组 {group_name} 的字典:")
    print(group_dict)

3. 输出结果示例

运行代码后会得到如下格式的输出:

分组 dementia 的字典:
{'Group': ['dementia', 'dementia', 'dementia'], 'Age': [66, 67, 90], 'Sex': ['M', 'M', 'F']}
分组 control 的字典:
{'Group': ['control', 'control'], 'Age': [55, 60], 'Sex': ['F', 'M']}

扩展说明

如果需要自动包含所有变量(无需逐个列指定),可以用循环遍历列名:

group_dict = {'Group': [group_name] * len(group_df)}
for col in group_df.columns:
    if col != 'diagnosis':  # 跳过分组用的diagnosis列
        group_dict[col] = group_df[col].tolist()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 06:07:13