【问题标题】:Group by range of row numbers in a dataframe按数据框中的行号范围分组
【发布时间】:2020-08-06 01:34:25
【问题描述】:

我有一个包含 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

【问题讨论】:

  • 您是否希望从 1200 开始每 50 行或按 object 1200-1250、1251-1300 等的值范围拆分为相等的行数数据帧,无论有多少行结果数据框?
  • 请提供Minimal, Reproducible Example,预期的输出,以及到目前为止您尝试了什么。目前尚不清楚您在寻找什么。
  • @ipj 行数不相等。少数人是 50,少数人是 100

标签: python pandas dataframe split pandas-groupby


【解决方案1】:

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

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]] 

然后继续上述步骤。

【讨论】:

  • 我使用了这个 df_temp = df[df['object'].astype(int) 1250 & df['object'].astype(int)
猜你喜欢
  • 1970-01-01
  • 2013-04-27
  • 2013-06-19
  • 1970-01-01
  • 2019-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-19
相关资源
最近更新 更多