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

基于C2列连续相同值的DataFrame中C1列均值计算需求

问题描述

我有如下结构的DataFrame:

C1C2
1010
2010
3016
523
623
810
410
210

需要根据C2列的连续相同值区块计算对应C1列的均值(即C2值发生变更前,所有同区块C1值的均值),期望得到的结果如下:

C1C2
1510
3016
5.523
4.6710
解决方案

可以借助Pandas的分组功能,先标记出C2列的连续相同值区块,再按区块计算C1的均值:

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame({
    'C1': [10, 20, 30, 5, 6, 8, 4, 2],
    'C2': [10, 10, 16, 23, 23, 10, 10, 10]
})

# 生成连续分组标识:C2值变化时分组编号递增
group_id = df['C2'].ne(df['C2'].shift()).cumsum()

# 按分组计算均值,保留C2对应值并格式化结果
result = df.groupby(group_id).agg(
    C1=('C1', lambda x: round(x.mean(), 2)),
    C2=('C2', 'first')
).reset_index(drop=True)

print(result)

运行代码后输出结果:

C1  C2
0  15.00  10
1  30.00  16
2   5.50  23
3   4.67  10

代码说明

  • df['C2'].ne(df['C2'].shift()):对比当前行与上一行的C2值,返回布尔值序列标记值的变化点
  • .cumsum():将布尔值累加生成连续分组的唯一编号
  • groupby(group_id).agg(...):按分组计算C1的均值(保留两位小数),同时取每组第一个C2值作为结果列的对应值

内容的提问来源于stack exchange,提问作者Horst-Jackson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 21:46:06