如何将小时级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']
逻辑说明
resample('D').agg(['min', 'mean', 'max']):按天聚合,同时计算三个统计值,生成带多级列的DataFramestack(level=1):将内层的聚合函数(min/mean/max)从列转为行索引的一部分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
相关产品推荐
相关产品推荐

