首页 > 解决方案 > 循环遍历日期并将值分配为周数

问题描述

我有一个带有日期列的数据框。我想创建一个新列,并在第 1 周、第 2 周时每 7 天分配一次值...我了解到这df.iloc[::7, :]将执行循环,但如何为新列分配值。谢谢你。

Date        Week
1/1/2020    1
2/1/2020    1
3/1/2020    1
...
8/1/2020    2
9/1/2020    2

标签: pythonpandas

解决方案


对于一般解决方案减去最小日期,将 timedeltas 转换为天,并通过7添加使用整数除法1

df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%Y')

df['Week'] = df['Date'].sub(df['Date'].min()).dt.days // 7 + 1
print (df)
         Date  Week
0 2020-01-01     1
1 2020-01-02     1
2 2020-01-03     1
3 2020-01-08     2
4 2020-01-09     2

如果有连续的日期时间没有重复,则将辅助数组除以行的长度7并添加1(但如果仅错过 1 个日期则失败):

df['Week'] = np.arange(len(df)) // 7 + 1

推荐阅读