根据长度将数据帧分割成相对均匀的块

2024-09-25 02:35:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须创建一个函数,将提供的数据帧分割成所需大小的块。例如,如果dataframe包含1111行,我希望能够指定400行的块大小,并获得三个更小的数据帧,大小分别为400、400和311。这项工作有方便的功能吗?存储和遍历切片数据帧的最佳方法是什么?

示例数据帧

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)

Tags: 数据方法函数import功能示例dataframeas
2条回答

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

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

基于固定行数将大型数据帧分解为较小的数据块的一种更为python的方法是使用列表理解:

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

相关问题 更多 >