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

如何用Pandas无循环切片或分组连续行?附示例

无需循环实现Pandas连续值分组的方法

完全不需要循环,用Pandas的内置方法就能轻松搞定这个连续数值的分组需求,具体步骤如下:

首先构造示例DataFrame:

import pandas as pd

df = pd.DataFrame({'col1': [3,4,11,12,13,23,25,26,27]})

然后通过以下代码直接得到目标结果:

# 生成分组标识:判断当前值与前一个值的差是否大于1,累计求和得到分组ID
group_ids = df['col1'].diff().fillna(1).gt(1).cumsum()
# 按分组ID聚合,将每组转为元组,再转成列表
list_of_consc_rows = df.groupby(group_ids)['col1'].agg(tuple).tolist()

执行后得到的结果就是你想要的:

[(3, 4), (11, 12, 13), (23,), (25, 26, 27)]

步骤解释

  • df['col1'].diff():计算当前值与前一行值的差值,第一行因无前置值结果为NaN
  • .fillna(1):把第一行的NaN替换为1,保证后续判断逻辑统一
  • .gt(1):判断差值是否大于1,大于1说明数值断开,标记为True,否则为False
  • .cumsum():对布尔值累计求和,True被当作1、False当作0,以此将连续数值归到同一组
  • 最后用groupby按分组ID聚合,把每组数值转成元组再转成列表即可完成操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:20:59