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

Pandas如何对同ID DataFrame行成对组合并计算Val1/Val2平均值

Pandas 实现相邻同ID行配对求均值方案

核心代码

import pandas as pd

# 测试用数据集
df = pd.DataFrame(columns=['ID', 'Val1', 'Val2'], data=[['id0', 10, 20], ['id0', 11, 19], ['id1', 5, 5], ['id1', 1, 1], ['id1', 2, 4]])

# 分组滑动计算相邻两行均值
result = df.groupby('ID', as_index=False).apply(
    lambda group: group[['Val1', 'Val2']].rolling(2).mean().dropna().reset_index(drop=True)
).reset_index(level=0)

# 生成带序号后缀的新ID
result['ID'] = result['ID'] + '_' + (result.groupby('ID').cumcount() + 1).astype(str)

# 调整列顺序、重置索引得到最终结果
result = result[['ID', 'Val1', 'Val2']].reset_index(drop=True)

逻辑说明

  • 所有操作均为pandas内置向量化运算,无手动遍历逻辑,性能远高于自定义循环实现,数据量越大优势越明显
  • 滑动窗口大小固定为2,计算结果自动对应每相邻两行的均值,丢弃首个空值行后刚好匹配所有有效配对
  • 用cumcount生成同ID下的配对序号,拼接后直接得到符合要求的新ID字段

运行后输出的result和预期结果完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 21:12:02