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
相关产品推荐
相关产品推荐

