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

Pandas如何将DataFrame转换为同键对应值列表的字典

Pandas按列分组聚合为列表字典的实现方法

针对你要把相同key对应的value归集为列表、最终输出指定结构字典的需求,不需要单独用全局apply实现,以下是经过验证的可行方案:


推荐方案:原生groupby聚合(性能最优)

利用pandas内置的分组聚合能力,代码简洁且运行效率最高,适配大数据量场景:

import pandas as pd

# 示例数据
df = pd.DataFrame({
    'key': [1, 1, 1, 2, 2],
    'value': ['kpi1', 'kpi2', 'kpi3', 'kpi4', 'kpi5']
})

# 核心逻辑:按key分组,将每组value聚合为列表后转字典
res = df.groupby('key')['value'].agg(list).to_dict()
# 把整数key转为字符串,和你给出的目标字典结构完全匹配
d = {str(k): v for k, v in res.items()}

运行后得到的d完全匹配你的预期:

{'1': ['kpi1', 'kpi2', 'kpi3'], '2': ['kpi4', 'kpi5']}

apply写法适配

你之前用apply没成功,核心原因是没有先做分组:直接对未分组的全表调用apply,无法跨行归集相同key的value值,必须配合groupby使用才能实现效果:

res = df.groupby('key')['value'].apply(list).to_dict()
d = {str(k): v for k, v in res.items()}

该写法输出结果和推荐方案一致,但apply本质是逐组循环调用,性能比原生agg聚合差,数据量较大时优先选择第一种方案。

避坑提示:不要尝试在不分组的前提下用全局apply实现该需求,这类写法需要手动维护字典存储中间结果,代码冗余且运行效率极低。


内容的提问来源于stack exchange,提问作者albert cordobés

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 03:31:01