#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. Большое вам спасибо за помощь. 🙂