首页 > 解决方案 > 按数据框中的行号范围分组

问题描述

我有一个包含 5000 行的数据框,我想根据行值将其拆分为多个数据框。

object     result 
1200           1             
1201           0             
1202           1             
1203           0             
1204           0             

对象行号每 300 行重复一次。对于行,1200-1250 一个数据帧,1251-1300 另一个数据帧,依此类推。

预期输出例如:

数据框1:

object  result
1200     1
1201     0
1203     0
..
1250     1

数据框 2:

object  result
1251     1
1252     0
..
1301     1

标签: pythonpandasdataframesplitpandas-groupby

解决方案


您可以使用除法来做到这一点。

df['groupObject'] = df['object'].div(50).round().astype(int)

现在,您要拆分数据框中的各个整数。这是我们所有的组:

groups = df['groupObject'].unique().values.tolist()

dfs = []
for group in groups:
   dfs.append(df[df['groupObject'] == group]

编辑:因为 50 显然不是一个常数,所以像这样切片你的数据框:

df_temp = df[df['object'].astype(int) > 1250]] 

然后继续执行上述步骤。


推荐阅读