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

Pandas按id分组取每组前2条记录计算均值并新增列的实现方法

实现代码

你可以通过Pandas的groupby结合transform方法完成需求,完整可运行代码如下:

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    'id': [1, 1, 1, 2, 2, 2, 2, 3],
    'value': [1, 2, 3, 4, 3, 2, 1, 1]
})

# 核心计算逻辑:按id分组取每组前2条value求平均,广播到对应分组的所有行
df['top_2_mean'] = df.groupby('id')['value'].transform(lambda x: x.head(2).mean())

# 输出结果验证
print(df)

代码逻辑说明

  • groupby('id'):根据id字段将数据划分为不同分组
  • transform:区别于普通聚合方法只返回和分组数相同的结果,transform会将聚合结果按分组映射回原数据的每一行,自动保证索引对齐
  • 匿名函数lambda x: x.head(2).mean():对每个分组的value序列,取前2条记录计算平均值,若分组内记录不足2条,则自动取全部分组数据计算,刚好适配id=3的场景

运行后输出的结果和要求的格式完全一致:

id  value  top_2_mean
0   1      1         1.5
1   1      2         1.5
2   1      3         1.5
3   2      4         3.5
4   2      3         3.5
5   2      2         3.5
6   2      1         3.5
7   3      1         1.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:39:03