为了账号安全,请及时绑定邮箱和手机立即绑定

如何根据一年中的一周创建调度系统

如何根据一年中的一周创建调度系统

慕码人2483693 2022-06-02 15:41:25
我有一个数据框,其中包含一年中的日期、日期和星期几。我需要使用一年中的一周来创建一个值从 1 到 5 的新列。假设我在第 35 周,第 35 周的所有列都应该有 1 个,第 36 周应该有 2 个,依此类推。一旦达到第 40 周和第 5 周,新列中的数字需要从第 41 周的 1 开始,并以这种模式继续下去,无论数据范围有多长def date_table(start='2019-08-26', end='2019-10-27'):    df = pd.DataFrame({"Date": pd.date_range(start, end)})    df["Day"] = df.Date.dt.weekday_name    df["Week"] = df.Date.dt.weekofyear    return df
查看完整描述

1 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

使用模数和周数计算索引:


import pandas as pd


start='2019-08-26'

end='2019-10-27'

df = pd.DataFrame({"Date": pd.date_range(start, end)})

df["Day"] = df.Date.dt.weekday_name

df["Week"] = df.Date.dt.weekofyear

df["idx"] = df["Week"] % 5 +1        # n % 5 = 0..4 plus 1 == 1..5 


print(df)

输出:


0  2019-08-26     Monday    35    1

[...]

6  2019-09-01     Sunday    35    1

7  2019-09-02     Monday    36    2

[...]

13 2019-09-08     Sunday    36    2

14 2019-09-09     Monday    37    3

[...]

20 2019-09-15     Sunday    37    3

21 2019-09-16     Monday    38    4

[...]

27 2019-09-22     Sunday    38    4

28 2019-09-23     Monday    39    5

[...]

34 2019-09-29     Sunday    39    5

35 2019-09-30     Monday    40    1

[...]


[63 rows x 4 columns]

如果您希望它从一个不能被 5 整除的周数开始- 您也可以通过减去所有周数的第一周的模 5 值来做到这一点:


# startweeknumber:

startweekmod = df["Week"][0] % 5


# offset by inital weeks mod

df["idx"] = (df["Week"] - startweekmod) % 5 + 1


查看完整回答
反对 回复 2022-06-02
  • 1 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信