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

如何将小时级DataFrame重采样日级并聚合min/max/mean后合并为单列

小时级DataFrame生成每日min/mean/max单列DataFrame的解决方案

方法一:一步聚合+格式转换

不用拆分生成三个DataFrame,直接通过resample的聚合功能一次性完成,再调整结构得到目标格式:

import pandas as pd
import numpy as np

# 生成示例小时级数据
df = pd.DataFrame(np.random.rand(72, 1),
                  columns=["Random"],
                  index=pd.date_range(start="20220101000000", end="20220103230000", freq='H'))

# 每日聚合min/mean/max,转换为单列结构
df_new = df.resample('D').agg(['min', 'mean', 'max']).stack(level=1).reset_index(level=1, drop=True)
# 给结果列重命名(可选)
df_new.columns = ['Daily_Stats']

逻辑说明

  1. resample('D').agg(['min', 'mean', 'max']):按天聚合,同时计算三个统计值,生成带多级列的DataFrame
  2. stack(level=1):将内层的聚合函数(min/mean/max)从列转为行索引的一部分
  3. reset_index(level=1, drop=True):移除聚合函数的索引层,最终得到每个日期对应三条统计值的单列结构

方法二:合并已生成的三个DataFrame

如果要沿用你已经生成的df_min、df_mean、df_max,直接按行堆叠后排序即可:

# 基于已有的三个统计DataFrame合并
df_new = pd.concat([df_min, df_mean, df_max]).sort_index()
# 重命名列(可选)
df_new.columns = ['Daily_Stats']

逻辑说明

pd.concat会按索引将三个DataFrame的行堆叠在一起,sort_index()确保每个日期的min/mean/max按顺序排列,最终结构与预期一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:15:48