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

如何在Pandas中按指定列值切片,获取该值(含)后的连续行分组?

按指定列值分组切片DataFrame的解决方案

问题背景

给定如下DataFrame:

Col1  Col2
128   False
129   True
130   True
183   False
184   True
202   False
203   True
204   True

需要以Col2列的False值为分组起点,包含该行及后续连续行(直到下一个False出现前),最终得到元组列表:[(128, 129, 130), (183, 184), (202, 203, 204)]

实现步骤

  1. 创建示例DataFrame
import pandas as pd

df = pd.DataFrame({
    'Col1': [128, 129, 130, 183, 184, 202, 203, 204],
    'Col2': [False, True, True, False, True, False, True, True]
})
  1. 生成分组标识
    通过标记Col2为False的位置,用累计和生成唯一分组ID:
df['group_id'] = df['Col2'].eq(False).cumsum()

这里df['Col2'].eq(False)会生成布尔序列(False所在行对应True),cumsum()将其转为累计数值,每个False行都会触发分组ID递增,后续True行自动归到当前分组。

  1. 分组并转换为元组列表
    按分组ID聚合,提取每组Col1的值并转为元组:
result = [tuple(group['Col1']) for _, group in df.groupby('group_id')]

验证结果

执行print(result)会输出:

[(128, 129, 130), (183, 184), (202, 203, 204)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 08:10:31