首页 文章

根据长度将数据帧拆分为相对均匀的块

提问于
浏览
14

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

  • 37

    基于固定行数将大型数据帧分成较小块的更加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)]
    
  • 3

    您可以使用 .groupby ,如下所示 .

    for g, df in test.groupby(np.arange(len(test)) // 400):
        print(df.shape)
    # (400, 2)
    # (400, 2)
    # (311, 2)
    

相关问题