Ответ 1
Вы можете использовать .groupby
, как показано ниже.
for g, df in test.groupby(np.arange(len(test)) // 400):
print(df.shape)
# (400, 2)
# (400, 2)
# (311, 2)
Мне нужно создать функцию, которая разбивала бы предоставленный dataframe на куски нужного размера. Например, если dataframe содержит 1111 строк, я хочу иметь возможность указать размер блока 400 строк и получить три меньших кадра данных с размерами 400, 400 и 311. Есть ли удобная функция для выполнения задания? Каким будет лучший способ хранить и перебирать фрагментированный фрагмент данных?
Пример DataFrame
import numpy as np
import pandas as pd
test = pd.concat([pd.Series(np.random.rand(1111)), pd.Series(np.random.rand(1111))], axis = 1)
Вы можете использовать .groupby
, как показано ниже.
for g, df in test.groupby(np.arange(len(test)) // 400):
print(df.shape)
# (400, 2)
# (400, 2)
# (311, 2)
Более питонический способ разбить большие кадры данных на более мелкие порции на основе фиксированного числа строк - это использовать понимание списка:
n = 400 #chunk row size
list_df = [test[i:i+n] for i in range(0,test.shape[0],n)]
[i.shape for i in list_df]
Выход:
[(400, 2), (400, 2), (311, 2)]