python - 根据长度将数据帧拆分为相对均匀的 block

标签 python pandas

我必须创建一个函数,它将提供的数据帧拆分为所需大小的 block 。例如,如果数据帧包含 1111 行,我希望能够指定 400 行的 block 大小,并获得三个较小的数据帧,大小分别为 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)

最佳答案

您可以调用floor division序列的数量最多为数据帧中的行数,并将其用于groupby将数据框分成大小相等的 block :

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

关于python - 根据长度将数据帧拆分为相对均匀的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33367142/

相关文章:

python - 如何忽略 Pandas 中的自定义 header

python - 为什么在 numpy.arange() 上使用 numpy.array()?不是多余的吗?

python - Google App Engine(python) 更新 db.StringListProperty 争用/并发问题

python - 将对字符串的引用存储在列表中

python - 将多列字符串值转换为 Pandas 中的数字

python - pandas loc 的逻辑更复杂?

python - SQLAlchemy:pandas sql_query 中的聚合查询

python - 用于提取十进制数的正则表达式

python - 数据作为数据帧附加在内存中

python - 如何通过 Python 连接到 VPN/代理服务器?