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

pandas如何提取DataFrame中num列连续行并拆分到多个DataFrame

实现方案

核心逻辑是通过相邻行num列的差值识别连续段边界,给每段连续整数分配唯一分组ID后拆分即可,全程用pandas原生向量化运算,不需要写显式循环,效率很高。

具体步骤

  • 若num列未按升序排列,先对num列排序重置索引(已排序可跳过该步)
  • 计算相邻行num的差值,差值不等于1的位置即为新连续段的起点,对判断结果累加生成分组ID
  • 按分组ID遍历分组,去掉临时生成的分组ID列,就能得到每个连续段对应的独立DataFrame

代码实现

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'num': [3, 4, 5, 26, 27, 30, 31, 32],
    'mut': ['-'] * 8
})

# 生成分组标签:连续的整数会被分到同一个标签下
df = df.sort_values('num').reset_index(drop=True)
df['group_tag'] = (df['num'].diff() != 1).cumsum()

# 拆分得到所有连续段的DataFrame,存入列表
split_dfs = [g.drop(columns='group_tag') for _, g in df.groupby('group_tag')]

结果验证

遍历split_dfs即可拿到需要的3个独立DataFrame:

  • split_dfs[0]对应num值为3、4、5的行组
  • split_dfs[1]对应num值为26、27的行组
  • split_dfs[2]对应num值为30、31、32的行组

注:如果原始数据的num列本身已经是升序排列,可以直接跳过排序重置索引的步骤,不影响分组结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 10:01:00