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

如何按Col1连续递增规则对Pandas DataFrame分组并重置组号

解决Pandas按Col1连续递增分组的问题

嘿,这个分组需求我刚好处理过类似的,咱们一步步来实现你想要的效果!

首先明确核心需求:当Col1的连续值不再递增(包括相等或者变小)时,就重置组号。我们可以通过Pandas的差值计算和累加功能轻松搞定。

步骤1:构造示例DataFrame

先把你给出的示例数据转换成Pandas DataFrame:

import pandas as pd

data = {
    'Col1': [34, 35, 36, 34, 35, 35, 36, 34, 35, 36],
    'Col2': [12.5, 12.9, 12.6, 12.5, 13.4, 12.9, 13.7, 12.9, 13.1, 12.7]
}
df = pd.DataFrame(data)

步骤2:生成分组号Col3

用以下代码直接生成目标列:

# 计算Col1的前后差值,标记需要重置分组的位置(差值<=0表示不再递增)
reset_flag = df['Col1'].diff() <= 0
# 对重置标记累加,填充第一行的NaN为True(第一行默认是第一个组的开始),得到连续组号
df['Col3'] = reset_flag.fillna(True).cumsum()

结果验证

运行代码后输出df,就能得到你期望的结果:

Col1  Col2  Col3
0    34  12.5     1
1    35  12.9     1
2    36  12.6     1
3    34  12.5     2
4    35  13.4     2
5    35  12.9     3
6    36  13.7     3
7    34  12.9     4
8    35  13.1     4
9    36  12.7     4

代码细节解释

  • df['Col1'].diff():计算当前行与前一行Col1的差值,第一行没有前一行,结果为NaN;
  • reset_flag = df['Col1'].diff() <= 0:当差值小于等于0时,说明当前行Col1未实现递增,标记为需要重置分组;
  • reset_flag.fillna(True):把第一行的NaN替换为True,因为第一行是第一个组的起始;
  • .cumsum():对布尔值累加(True视为1,False视为0),每遇到一个重置标记,累加值就加1,正好生成连续的组号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:24:16