Разделение фрейма данных в соответствии с набором индексов строк

#python #python-3.x #pandas #dataframe #indexing

#python #python-3.x #pandas #фрейм данных #индексирование

Вопрос:

Я новичок в Python, и мое требование — найти чистый код для разделения фрейма данных на разные фреймы данных в соответствии с набором индексов строк.

Фрейм Module1 данных содержит более миллиона строк. Его необходимо разделить в соответствии с приведенными ниже номерами индексов, начиная с 0.

Int64Index([55893, 122056, 180227, 234314], dtype='int64')

То есть первый разлитый фрейм данных должен быть от 0 до 55892, следующий — от 55893 до 122055 и т.д.

Это мой код, и проблема связана с последним фреймом данных от 234314 до конца. Я не уверен, как реализовать это в цикле.

   start=0
  Module=[]
  for ele in indexing:
      Module.append(Module1[start:ele])
      start=ele
  Module.append(Module1[start:])
  print(Module)
 

Но я хотел бы получить гораздо более чистое решение для этого кода.

Ответ №1:

Вы можете использовать iloc и цикл, так как iloc разбивает фрейм данных на вложенные фреймы желаемой длины. Ожидаемое поведение в цикле должно быть примерно таким:

 step = 55893

df_1 = Module1.iloc[:step, :]
df_2 = Module1.iloc[step:(step*2), :]
df_3 = Module1.iloc[(step*2):(step*3), :]
...
df_n = Module1.iloc[(step*(n-1)):(step*n), :]
 

P.S: проверьте разделение numpy для альтернативы.

Комментарии:

1. Большое вам спасибо за помощь. 🙂