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

Python Pandas按指定星期顺序与时间多级分组的优化方案问询

多级索引按工作日+时间分组的优化方案探讨

我花了大量时间寻找这类问题的优质解决方案,但搜到的基本都是针对单级索引的实现,比如按周分组、按工作日分组的常规方案。自己摸索出了下面这套适配场景的代码,但想请教有没有更合理的实现方式:

df = df.groupby([df.index.weekday, df.index.time]).sum()
df.index = df.index.set_levels(df.index.levels[0].map({0: "Monday", 1: "Tuesday", 2: "Wednesday", 3: "Thursday", 4: "Friday", 5: "Saturday", 6: "Sunday"}), level=0)

优化方案1:分组阶段直接映射工作日名称

无需事后修改索引层级,在分组时就将weekday数值转换为对应名称,代码更简洁直观:

weekday_map = {0: "Monday", 1: "Tuesday", 2: "Wednesday", 3: "Thursday", 4: "Friday", 5: "Saturday", 6: "Sunday"}
df = df.groupby([df.index.weekday.map(weekday_map), df.index.time]).sum()

优化方案2:利用Pandas内置的工作日名称方法

如果你的索引是DatetimeIndex,可以直接调用index.day_name()获取工作日名称,无需手动维护映射字典,还支持多语言适配:

df = df.groupby([df.index.day_name(), df.index.time]).sum()

补充说明

  • 若需要固定返回英文名称,可指定locale参数(需确保系统支持对应本地化设置):
df = df.groupby([df.index.day_name(locale='en_US'), df.index.time]).sum()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 20:11:04