假设您有这样的输入:
组别 年龄 性别
0 健康对照组 70 女
1 老年痴呆症 66 男
2 老年痴呆症 90 女
3 健康对照组 62 男
4 健康对照组 64 女
5 老年痴呆症 67 男
如果您需要在传统循环中使用字典,只需使用 pandas.DataFrame.to_dict
将组转换为字典:
for key, group in df.groupby('组别'):
d = group.to_dict('list')
另外,您可以使用简洁的字典推导式来获取一个嵌套字典:
out = {k: g.to_dict('list') for k, g in df.groupby('组别')}
输出:
{'老年痴呆症': {'年龄': [66, 90, 67],
'组别': ['老年痴呆症', '老年痴呆症', '老年痴呆症'],
'性别': ['男', '女', '男']},
'健康对照组': {'年龄': [70, 62, 64],
'组别': ['健康对照组', '健康对照组', '健康对照组'],
'性别': ['女', '男', '女']}}
或者,由于组别已经作为键存在,我们可以从内部字典中删除它:
cols = df.columns.difference(['组别'])
out = {k: g[cols].to_dict('list') for k, g in df.groupby('组别')}
输出:
{'老年痴呆症': {'年龄': [66, 90, 67], '性别': ['男', '女', '男']},
'健康对照组': {'年龄': [70, 62, 64], '性别': ['女', '男', '女']}}