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

基于连续条件对DataFrame进行分组的技术实现

解决连续相同Group值的时序数据分组问题

普通的groupby('Group')会把所有相同Group值的行归为一组,无法区分连续中断的情况。要实现连续相同Group值的独立分组,核心是生成一个连续分组标识,具体方案如下:

代码实现

import pandas as pd

# 假设你的时序DataFrame名为df,包含Group字段
# 生成连续分组ID:当Group值与上一行不同时,ID递增
df['group_id'] = df['Group'].ne(df['Group'].shift()).cumsum()

# 按group_id分组,将每个分组的DataFrame存入列表
grouped_dfs = [group for _, group in df.groupby('group_id')]

原理说明

  • df['Group'].shift():将Group字段向下偏移一行,用于和当前行比较
  • ne():判断当前行Group值是否与上一行不同,返回布尔序列(True表示值变化)
  • cumsum():对布尔序列累加(True=1,False=0),生成唯一的连续分组ID,相同连续Group值的行拥有同一个ID
  • 最后通过groupby('group_id')分组,将每个分组转换为DataFrame存入列表

示例验证

假设原始数据如下:

TimeGroupValue
08:00A10
08:10A12
08:20B15
08:30B14
08:40A11

生成的group_id列值为[1,1,2,2,3],最终grouped_dfs会包含3个DataFrame,分别对应连续的A组、连续的B组、再次出现的A组,完全符合连续分组的需求。

这个方案基于pandas向量化操作,处理数千条时序数据效率极高,适合后续独立分析每个连续分组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 16:32:08