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

如何按特定规则对Pandas DataFrame列的数值连续序列分组

问题:基于特定规则对Pandas DataFrame分组

我的DataFrame如下:

import pandas as pd

df = pd.DataFrame(
    {
        'a': [0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0],
        'b': [0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0]
    }
)

期望的分组结果:

2   1  1
3   0  1
4   0  1
5   0  1
6   0  0
7   0  0

9   1  0
10  0  1

13  1  1
14  0  1
15  0  1
16  0  0
17  0  1

分组规则:

  • 首先定位a列值为1的行;
  • 从该行开始,只要后续行的b列值不为0就继续包含,直到遇到b列值为0时,需要包含该0所在行及之后的一行;
  • 若a列值为1且b列值为0,则仅包含该行及后续一行;
    本质上是遇到b列的0时停止,但要包含该0之后的一行。

我尝试用df.b.diff().cumsum()进行分组,也参考过相关技术帖子,但结果都不符合预期。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:06:22