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

如何按原始连续索引值分组拆分未重置索引的Pandas DataFrame

按原始索引相邻性分组Pandas DataFrame的解决方案

这个需求其实很容易实现,核心思路是通过判断索引的连续性来生成分组键,具体步骤如下:

步骤1:计算索引的连续性差值

首先我们需要获取DataFrame的索引,然后计算每一行索引与前一行索引的差值。当这个差值大于1时,说明当前行是一个新分组的起始点。

import pandas as pd

# 假设你的DataFrame名为df
# 将索引转换为Series,计算相邻索引的差值;第一行没有前一行,用fillna填充一个大于1的值(比如2),确保它被标记为新组起点
index_diff = df.index.to_series().diff().fillna(2)

步骤2:生成分组标识

接下来,我们对“差值大于1”的布尔值序列做累加求和,这样每遇到一个不连续的索引,分组标识就会递增,从而得到每个行对应的分组ID:

group_id = (index_diff > 1).cumsum()

步骤3:执行分组操作

现在用这个分组ID对DataFrame进行分组即可:

grouped_df = df.groupby(group_id)

验证分组结果

你可以遍历分组来确认结果是否符合预期:

for group_num, group_data in grouped_df:
    print(f"第 {group_num} 组:")
    print(group_data)
    print("---")

针对你提供的DataFrame,执行上述代码后,索引1-12会被分到同一组(因为它们的索引是连续的,差值都是1),索引61的行会单独成为一组。如果你的实际需求是要把1-9和10-12分成两组,那可能是基于其他规则(比如时间帧的间隔),但如果是严格按索引相邻性的话,1-12属于同一连续序列哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 19:37:32