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

如何按每5行拆分无分组变量的Pandas DataFrame?

按固定行数拆分Pandas DataFrame的实现方法

这问题我平时处理批量数据时经常碰到,用Pandas结合Numpy就能轻松搞定,给你分享两种实用的方法,都能自动处理最后一组不足指定行数的情况:

方法一:使用numpy.array_split(推荐)

array_split是最省心的方式,它会自动根据总长度和每组大小计算分组数,最后一组不足的话也会完整保留:

import pandas as pd
import numpy as np

# 假设你的原始DataFrame是df
# 按每5行拆分,返回一个包含所有小DataFrame的列表
split_dfs = np.array_split(df, np.ceil(len(df) / 5).astype(int))

如何调用拆分后的DataFrame?

split_dfs是一个列表,你可以通过索引直接访问每个小DataFrame:

  • split_dfs[0]对应你要的df1(前5行)
  • split_dfs[1]对应df2(接下来5行)
  • ...以此类推

如果一定要把每个小DataFrame单独命名成df1、df2这种,可以用循环快速赋值:

for idx, sub_df in enumerate(split_dfs, start=1):
    globals()[f'df{idx}'] = sub_df

方法二:使用Pandas的groupby

通过计算每行的分组键,再按分组键拆分,逻辑更直观:

import pandas as pd

# 计算每行所属的分组:行索引整除5,前5行(索引0-4)归为组0,下一组归为组1,以此类推
group_keys = df.index // 5

# 按分组键分组,再转换为DataFrame列表
split_dfs = [group for _, group in df.groupby(group_keys)]

这种方法的好处是可以自定义分组逻辑,比如你以后想调整每组行数,只需要改//后面的数字就行。

效果验证

针对你给出的16行DataFrame:

  • 两种方法都会拆分成4个小DataFrame
  • 前3组各5行,最后1组1行,完全符合你的需求

小提醒:如果不是必须单独命名,建议用列表split_dfs存储所有拆分后的DataFrame,后续遍历操作会更灵活哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:00:28