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

如何拆分Pandas DataFrame,使每组连续数字序列独立成DataFrame?

高效拆分Pandas DataFrame为连续序列子DataFrame列表

针对你的大型DataFrame拆分需求,完全不需要逐行循环,用Pandas的向量化操作就能高效解决,核心思路是通过生成分组键来标记每个连续序列:

  1. 生成分组标识:利用ConsecutiveNumbers == 1的布尔结果累加,每次遇到1时分组号就会递增,这样每个连续序列会被分配到同一个分组里:
import pandas as pd

# 假设你的DataFrame名为df
df['group_id'] = (df['ConsecutiveNumbers'] == 1).cumsum()
  1. 按分组拆分:用groupby按生成的group_id分组,直接提取每个分组对应的子DataFrame到列表中:
# 拆分并移除临时的group_id列
df_list = [group.drop('group_id', axis=1) for _, group in df.groupby('group_id')]

示例验证

比如构造一个测试DataFrame:

data = {
    'ConsecutiveNumbers': [1,2,3,1,2,1,2,3,4],
    'OtherData': ['a','b','c','d','e','f','g','h','i']
}
df = pd.DataFrame(data)

运行上述代码后,df_list会包含3个子DataFrame,分别对应三个连续序列:

  • 第一个子DataFrame:ConsecutiveNumbers为1、2、3
  • 第二个子DataFrame:ConsecutiveNumbers为1、2
  • 第三个子DataFrame:ConsecutiveNumbers为1、2、3、4

这种方法依赖Pandas内部优化的向量化运算,比逐行循环效率高几个数量级,完全适配大型DataFrame的处理场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 01:17:05