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

Pandas DataFrame如何将连续同值行合并为含起止信息的记录

Pandas实现连续相同score折叠的方法

核心是先为每一段连续相同score的行生成独立分组标识,再按分组聚合计算索引i的起止值,避免把不连续的同score段错误合并。


完整实现代码

import pandas as pd

# 1. 构造原始测试数据(如果是你自己的现有数据,跳过这步直接用你的df即可)
df = pd.DataFrame({
    'i': [5,6,7,8,9,15,30,31,32,10,11,20,21,22],
    'score': [3.0,3.0,3.0,11.0,11.0,10.0,1.0,1.0,1.0,8.0,8.0,1.0,1.0,1.0]
})

# 2. 生成连续块分组ID:当前行score和上一行不同时,分组号自增
df['block_tag'] = (df['score'] != df['score'].shift()).cumsum()

# 3. 按分组聚合,提取每个连续块的起止i值和对应score
res = df.groupby('block_tag', as_index=False).agg(
    start=('i', 'min'),
    end=('i', 'max'),
    score=('score', 'first')
)[['start', 'end', 'score']]

运行结果

执行代码后得到的res和预期输出完全一致:

start  end  score
0      5    7    3.0
1      8    9   11.0
2     15   15   10.0
3     30   32    1.0
4     10   11    8.0
5     20   22    1.0

适配说明

如果你的原始数据里i是DataFrame的索引而非普通列,先执行下面的命令把索引转为列,再跑上述逻辑即可:

df = df.reset_index(names='i')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:01:41