python - 将月份中的某一天转换为星期几
问题描述
Expected Output: df
year | month | day | week
2019 | 3 | 1 | 1
2017 | 12 | 15 | 2
2016 | 9 | 28 | 4
2020 | 4 | 22 | 3
我想将天(1 到 31)转换为星期。例如,如果日期为 1-8,则为第 1 周。如果日期为 9-16,则为第 2 周,依此类推。
但是,以下代码返回无效语法。
for row in df:
if df['day'] <= 8:
df['Week'] = 1
elif df['day'] <= 16:
df['Week'] = 2
elif df['day'] <= 24:
df['Week'] = 3
else:
df['Week'] = 4
如果它更准确就更好了,因为每个月都有不同的一周的第一天开始,但我不知道该怎么做。
解决方案
如果只需要按week
天计算,请使用整数除以8
并添加1
:
df['week1'] = df['day'] // 8 + 1
print (df)
year month day week week1
0 2019 3 1 1 1
1 2017 12 15 2 2
2 2016 9 28 4 4
3 2020 4 22 3 3
如果需要按日期时间数周,请先使用to_datetime
,然后Series.dt.weekofyear
:
df['week2'] = pd.to_datetime(df[['day', 'month','year']]).dt.weekofyear
print (df)
year month day week week2
0 2019 3 1 1 9
1 2017 12 15 2 50
2 2016 9 28 4 39
3 2020 4 22 3 17
推荐阅读
- swift - 阻止 UISwitch 改变状态
- line - pinescript - 当价格越过一条线时立即(不是在收盘时)画一条水平线
- reactjs - 自定义古腾堡块,刷新页面后验证失败
- django - 在 24 小时内过期令牌 - django-rest-knox
- html - 缩小窗口时是否可以创建一条垂直线而不能更改大小?
- mysql - 使用数据导入处理程序连接来自不同列的值
- docker - 如何从包含提交哈希作为标记名称的 DockerHub 中提取最新(最新)的 docker 映像
- c++ - 尝试打开文件对话框,comdlg32.lib 在哪里?
- html - 为了将图标 syde 并排放置,我需要进行哪些更改
- perl - 舍入浮点数等于 5