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

Pandas不使用groupby实现连续同值分块汇总表方法

Pandas按连续同值块聚合统计实现方案

直接使用groupby('x')会合并所有同x值的记录,无法区分非连续的同值块,解决思路是先为每个连续同值块生成唯一ID,再按该ID分组聚合即可保留块的先后顺序。

实现步骤

  • 生成连续块标识:对比当前行x值与上一行x值,值发生变化的位置记为新块起点,通过布尔值累加生成唯一块ID
  • 按块ID分组聚合,分别统计块内x取值、记录数、首个y值、末尾y值

完整可运行代码

import pandas as pd

# 构造示例DataFrame
data = {'x': [1, 2, 2, 2, 1, 1],
        'y': [1, 3, 5, 4, 4, 5]}
df = pd.DataFrame(data)

# 为连续同值块生成唯一ID
df['block_id'] = (df['x'] != df['x'].shift()).cumsum()

# 按块聚合得到目标汇总表
result = df.groupby('block_id').agg(
    x=('x', 'first'),
    **{'# occurance': ('y', 'count')},
    **{'first y value': ('y', 'first')},
    **{'last y value': ('y', 'last')}
).reset_index(drop=True)

运行结果

执行代码后得到的result完全匹配预期输出:

x# occurancefirst y valuelast y value
1111
2334
1245

该逻辑可通用在所有需要按连续值分块统计的场景,只需将生成块ID逻辑中的df['x']替换为目标分块字段即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 12:19:52