python - 循环遍历日期并将值分配为周数
问题描述
我有一个带有日期列的数据框。我想创建一个新列,并在第 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
解决方案
对于一般解决方案减去最小日期,将 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
推荐阅读
- json - JSON 编码/解码和 RSA 证书
- plotly.js - 使用 plotly.js 将线条图动画化为另一条线的延伸
- python - 使用 python 绑定来检查 C++ 类型是否以规范方式是指针、引用等?
- bash - 刷新sed里面的命令
- node.js - XMLHttpRequest onload Method Not working at node js back end side
- javascript - 触发标签点击有时会导致页面重新加载
- javascript - 如何在 ajax 调用 webapi 期间解决错误代码 0
- python - 如何在 DetailView 模板中添加一个将 ID 发送到表单的按钮?
- python - How to categorise components in a list of strings
- python - Pandas Dataframe returns None after recursive function?