我必须创建一个函数,将提供的数据帧拆分为所需大小的块。例如,如果数据帧包含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)
答案 0 :(得分:40)
您可以使用.groupby
,如下所示。
for g, df in test.groupby(np.arange(len(test)) // 400):
print(df.shape)
# (400, 2)
# (400, 2)
# (311, 2)
答案 1 :(得分:3)
基于固定行数将大型数据帧分成较小块的更加pythonic方法是使用列表理解:
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)]