如何按特定规则对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
相关产品推荐
相关产品推荐

