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

按特定行索引规则拆分Pandas DataFrame的方法求助

按特定行索引规则拆分Pandas DataFrame的方法求助

嗨Jasper,我完全懂你的需求啦!你是想把100行的DataFrame按「索引模5的余数」来分组——也就是把所有索引是5n+0、5n+1…5n+4的行分别归为5个组,但你之前用l_df.index//5的方式,是把连续的5行(比如0-4、5-9)捆成一组,这就和你要的效果完全反过来了,难怪每个组只有5行~

给你两个简单的解决办法:

方法一:直接按索引模5分组(和你的思路对应)

用l_df.index % 5来分组,这样余数相同的索引会被分到同一组,正好符合你的要求:

# 按索引模5的余数分组,余数0对应0、5、10…95行,以此类推
grouped = l_df.groupby(l_df.index % 5)

# 获取每个分组
df0 = grouped.get_group(0)  # 包含0、5、10…95行
df1 = grouped.get_group(1)  # 包含1、6、11…96行
df2 = grouped.get_group(2)  # 包含2、7、12…97行
df3 = grouped.get_group(3)  # 包含3、8、13…98行
df4 = grouped.get_group(4)  # 包含4、9、14…99行

这样每个分组都会有20行(100/5),完全匹配你想要的结果。

方法二:更简洁的批量获取分组

如果不想一个个赋值,也可以把所有分组直接存到列表里,用起来更方便:

# 把分组转换成列表,顺序是余数0到余数4的组
dfs_list = [group for _, group in l_df.groupby(l_df.index % 5)]

# 调用的时候直接用索引,比如dfs_list[0]就是第一个分组,dfs_list[4]是最后一个

简单总结下:你要的是「间隔5行取行」,所以用模运算(%);之前用的「//」是「连续5行一组」,这就是问题的核心啦~

备注:内容来源于stack exchange,提问作者Jasper

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 17:43:05