You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python对DataFrame按固定行数分箱求各列平均值的实现问题

Python实现DataFrame每5行分箱计算列均值

你可以直接用pandas完成需求,完整实现代码如下:

import pandas as pd

# 1. 读取数据(如果是本地csv直接用pd.read_csv("你的文件路径")即可)
# 以下是示例数据构造,你可以替换成自己的数据读取逻辑
data = [
    [1, 3, 5, 6],
    [2, 4, 36, 65],
    [3, 56, 98, 62],
    [4, 89, 52, 35],
    [5, 32, 74, 30],
    [6, 55, 22, 35],
    [7, 68, 23, 31],
    [8, 97, 65, 15],
    [9, 2, 68, 1],
    [10, 13, 54, 300]
]
df = pd.DataFrame(data, columns=["Unnamed: 0", "C00_zscore", "C01_zscore", "C02_zscore"])

# 2. 清理全空行(适配示例里末尾的空行场景)
df = df.dropna(how='all').reset_index(drop=True)

# 3. 生成分箱标签,每5行一组
df['bin'] = (df.index // 5) + 1

# 4. 分组求均值,并重命名列
result = df.groupby('bin')[['C00_zscore', 'C01_zscore', 'C02_zscore']].mean()\
    .rename(columns=lambda x: x.replace('_zscore', '_binned'))\
    .reset_index()

# 输出结果
print(result)

运行后输出的结果和预期完全一致:

bin  C00_binned  C01_binned  C02_binned
0    1        36.8        53.0        39.6
1    2        47.0        46.4        76.4

核心逻辑说明

  • 用索引的整数除法//5生成组号:索引默认从0开始时,0-4行计算结果为0,加1后对应第1组,5-9行计算结果为1,加1后对应第2组,刚好匹配每5行分一组的规则
  • 分组后直接对需要计算的数值列调用mean()方法求均值,再替换列名后缀即可

内容的提问来源于stack exchange,提问作者sibillaromana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:15:03