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

如何对77列1080行的DataFrame按每15行求min、max和mean?

解决方案

刚好你的数据行数1080是15的整数倍(1080 ÷ 15 = 72组),处理起来非常顺畅。用Pandas的groupby结合agg就能轻松实现需求,具体步骤如下:

  • 生成分组键:我们可以用numpy生成一个数组,让每15行对应同一个组编号。比如前15行组号为0,接下来15行组号为1,以此类推。
  • 分组聚合:用这个分组键对DataFrame分组,然后同时计算每个列的最小值、最大值和均值。
  • 优化列名(可选):默认聚合后的列是多层索引,我们可以把它改成更直观的单层列名,方便后续使用。

直接上代码:

import pandas as pd
import numpy as np

# 生成分组键:每行对应一个组号,每15行一组
group_ids = np.arange(len(df)) // 15

# 分组计算指定统计量
result_df = df.groupby(group_ids).agg(['min', 'max', 'mean'])

# 可选:将多层列名转为单层,格式为「原列名_统计量」
result_df.columns = [f"{col}_{stat}" for col, stat in result_df.columns]

代码解释

  1. np.arange(len(df)) // 15:生成从0到1079的数组,每个数除以15取整,这样自动把每15行归为一组。
  2. groupby(group_ids).agg(['min', 'max', 'mean']):按组分组后,对每个列一次性计算三个统计量,返回的结果会有多层列索引(第一层是原列名,第二层是统计量)。
  3. 最后一行的列名调整是可选操作,如果你习惯单层列名的话可以执行,这样列名会变成类似'columnA_min'、'columnA_max'的形式,更清晰。

执行完后,result_df就是你要的新DataFrame:它会有72行(对应72个分组),77×3=231列(每个原列对应三个统计量列)。

如果你的数据行数不是15的整数倍,这个方法依然有效——最后一组会包含剩下的不足15行的数据,统计量计算逻辑不受影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:52:09