Группировка по диапазону номеров строк в кадре данных

У меня есть фрейм данных с 5000 строками, я хочу разбить его на несколько фреймов данных на основе значения строки.

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

Номера строк объекта повторяются для каждых 300 строк. Для строк 1200-1250 один фрейм данных, 1251-1300 другой фрейм данных и так далее.

Ожидаемый результат, например:

Dataframe1:

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

Фрейм данных 2:

object  result
1251     1
1252     0
..
1301     1
# pandas dataframe pandas-groupby split
Источник
  • 1
    Вы хотите разделить фреймы данных на равное количество строк на каждые 50 строк, начиная с 1200, или по диапазонам значений object 1200-1250, 1251-1300 и т. Д. Независимо от того, сколько строк будет в результирующих фреймах данных?
  • 0
    Пожалуйста, дайте минимальный воспроизводимый пример , ожидаемый результат и то, что вы пробовали до сих пор. Непонятно, что вы ищете.
  • 0
    @ipj Количество строк не равно. 50 для немногих и 100 для немногих
Codelisting
за 0 против
Лучший ответ

Вы можете сделать это с помощью деления.

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

а затем выполните шаги, описанные выше.

  • 0
    Я использовал этот df_temp = df [df ['object']. Astype (int) <1250] и дал ограничения df_temp = df [df ['object']. Astype (int)> 1250 & df ['object']. Astype (int) <1301]. Работает. Спасибо за интуицию. :)
Codelisting
Популярные категории
На заметку программисту