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

Pandas实现相同值多连续块分组并计算每组period的最大最小值

实现方案

你可以通过pandas的连续分组标识+聚合统计实现需求,核心逻辑是先给连续相同的quantity值划分成独立分组,再对每个分组计算period的极值:

完整代码示例

import pandas as pd

# 构造示例DataFrame
data = {
    'period': range(1, 25),
    'quantity': [0]*7 + [10]*9 + [0]*8
}
df = pd.DataFrame(data)

# 生成连续相同quantity的分组标识
df['group_id'] = (df['quantity'] != df['quantity'].shift()).cumsum()

# 分组聚合得到结果
result = df.groupby('group_id').agg(
    quantity = ('quantity', 'first'),
    min = ('period', 'min'),
    max = ('period', 'max')
).reset_index(drop=True)

print(result)

代码说明

  • df['quantity'].shift():将quantity列整体向下偏移一行,用于和当前行的值对比
  • (df['quantity'] != df['quantity'].shift()).cumsum():对比当前行和上一行的quantity值,出现不相等的位置返回True,累加后连续相同值的行会得到同一个分组ID
  • groupby聚合:按生成的分组ID分组,取每组第一个quantity值,同时计算该组period列的最小值、最大值,即可得到你需要的输出结果。

运行上述代码输出的结果和你给出的期望格式完全一致:

quantity  min  max
0         0    1    7
1        10    8   16
2         0   17   24

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:54:03