如何在Python中自定义星期映射(周日为1,周六为7)
实现自定义星期映射(周日=1,周一=2…周六=7)
你可以通过以下几种方式,基于现有dayofweek或isoweekday方法调整,实现目标映射规则:
方法1:字典映射(基于dayofweek)
dt.dayofweek的返回规则是:周一=0、周二=1、…周六=5、周日=6。直接定义映射字典完成转换:
# 定义自定义星期映射规则 day_mapping = {0: 2, 1: 3, 2: 4, 3: 5, 4: 6, 5: 7, 6: 1} # 应用映射到DataFrame power_data['Custom Day of Week'] = power_data['Date'].dt.dayofweek.map(day_mapping)
方法2:数学运算简化(基于isoweekday)
dt.isoweekday的返回规则是:周一=1、周二=2、…周六=6、周日=7。通过模运算+1即可快速转换:
power_data['Custom Day of Week'] = power_data['Date'].dt.isoweekday % 7 + 1
逻辑说明:
- 周一到周六(返回值1-6):
x%7结果为1-6,加1后对应目标的2-7 - 周日(返回值7):
7%7=0,加1后得到目标的1
方法3:Lambda条件转换(基于isoweekday)
如果觉得模运算不够直观,也可以用条件判断的Lambda表达式实现:
power_data['Custom Day of Week'] = power_data['Date'].dt.isoweekday.apply(lambda x: 1 if x == 7 else x + 1)
内容的提问来源于stack exchange,提问作者ARE
相关产品推荐
相关产品推荐

