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

如何高效为Pandas DataFrame中每个唯一Name生成对应Value值的列表?

高效实现按Name分组生成Value列表的方法

嘿,这个需求用Pandas自带的分组功能就能轻松搞定,而且效率拉满!我给你推荐两种最实用的高效方案:

方法一:groupby + agg(list) + to_dict(最简洁)

这是最直接也最推荐的写法,利用Pandas优化过的分组聚合能力,一行代码就能搞定:

import pandas as pd

df = pd.DataFrame({
    'Name': ['Jim','Jack','Jim','Jack','Jim','Jack','Mick','Mick'],
    'Day':[1,1,2,2,3,3,4,4],
    'Value':[10,20,30,40,50,60,70,80],
})

# 核心代码
name_value_dict = df.groupby('Name')['Value'].agg(list).to_dict()

执行后,name_value_dict就是你要的结果:

{'Jim': [10, 30, 50], 'Jack': [20, 40, 60], 'Mick': [70, 80]}

你可以直接通过键访问对应列表,比如name_value_dict['Jim']就能得到[10,30,50]。

方法二:字典推导式配合groupby(更直观)

如果你喜欢更清晰的遍历逻辑,也可以用字典推导式来实现,性能和第一种几乎没差:

name_value_dict = {name: group['Value'].tolist() for name, group in df.groupby('Name')}

为什么这两种方法高效?

Pandas的groupby底层是用C语言优化实现的,比你自己写Python循环(比如逐行遍历并手动append到列表)快得多,尤其是当你的DataFrame数据量很大的时候,这种性能差距会非常明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 14:22:37