如何将带DatetimeIndex的Series按周几和小时分组生成均值DataFrame
实现方案
首先确保你的原始数据是索引为DatetimeIndex的Series,示例实现如下:
import pandas as pd # ---------------------- # 如果你原始数据是DataFrame,先做预处理: # df = pd.read_csv("你的数据文件路径") # df["time"] = pd.to_datetime(df["time"]) # s = df.set_index("time")["my_values"] # ---------------------- # 提取分组维度:小时、星期名称 hour = s.index.hour weekday = s.index.day_name() # 分组求均值后调整结构 result = s.groupby([hour, weekday]).mean().unstack() # 调整列顺序为周一到周日,补全0-23的所有小时 week_order = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] result = result.reindex(columns=week_order, index=range(24)) result.index.name = "hour"
补充说明
- 如果需要中文列名,把
day_name()改为day_name(locale="zh_CN"),同时修改week_order为对应的中文星期名即可 - 缺失时段的均值默认会填充为NaN,可通过
fillna(0)自行修改填充值
内容的提问来源于stack exchange,提问作者Dr. Paprika
相关产品推荐
相关产品推荐

