根据长度

时间:2015-10-27 11:44:37

标签: python pandas

我必须创建一个函数,将提供的数据帧拆分为所需大小的块。例如,如果数据帧包含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)

2 个答案:

答案 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)]