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

如何将Pandas DataFrame按p_id分组转换为指定结构的二维列表

实现方法

你之前的写法不符合预期的原因有两个:

  1. 直接对分组后的DataFrame执行apply(list)会返回列名的列表,而非每行两值组成的元组
  2. 注意列名大小写匹配:你示例代码里写的time和实际数据的列名Time不一致,会触发键错误

代码实现

首先构造示例DataFrame:

import pandas as pd

data = {
    "p_id": [1, 1, 1, 2,2,3,3],
    "m_id": [11,25,35,11,35,25,35],
    "Time": [25,40,10,21,13,15,20]
}
df = pd.DataFrame(data)
通用写法(小数据量适用)
Jobs = df.groupby('p_id')[['m_id', 'Time']].apply(lambda g: [tuple(row) for row in g.values]).tolist()
高效写法(大数据量适用,避免逐行循环)
Jobs = df.assign(job=df[['m_id','Time']].agg(tuple, axis=1))\
         .groupby('p_id')['job']\
         .agg(list)\
         .tolist()

输出验证

执行后打印Jobs即可得到你需要的结构:

print(Jobs)
# 输出结果:
# [[(11, 25), (25, 40), (35, 10)], [(11, 21), (35, 13)], [(25, 15), (35, 20)]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:06:05