我做了一些简单的搜索,使用“在python中获取双周变量”,但没有找到很多有用的帖子,所以我想在这里发布我的问题。
我有一个包含数万条记录的数据框架。数据帧包含整个会计年度的记录。每条记录都有一个datetime变量CHECKIN_DATE_TIME。我想创建一个双周变量,从日期2019年6月30日开始。
ID CHECKIN_DATE_TIME
1 2019-06-30 13:36:00
2 2019-06-30 14:26:00
3 2019-06-30 20:10:00
4 2019-06-30 21:27:00
....
51 2019-07-10 13:36:00
52 2019-07-10 10:26:00
53 2019-07-10 10:10:00
54 2019-07-10 23:27:00
....我希望新的数据帧看起来像这样,其中2019年6月30日至2019年7月13日是第1周,2019年7月14日至2019年7月27日是第2周,依此类推,直到2020年6月28日结束日期。因此,在Week变量中将有26周,并且每周代表2周的时间范围。
编辑并将周范围内的最后一天分配给周编号。
ID CHECKIN_DATE_TIME Week Date
1 2019-06-30 13:36:00 1 7/13/2019
2 2019-06-30 14:26:00 1 7/13/2019
3 2019-06-30 20:10:00 1 7/13/2019
4 2019-06-30 21:27:00 1 7/13/2019
....
51 2019-07-20 13:36:00 2 7/27/2019
52 2019-07-20 10:26:00 2 7/27/2019
53 2019-07-20 10:10:00 2 7/27/2019
54 2019-07-20 23:27:00 2
....发布于 2020-07-01 00:31:18
您可以通过确定入住日期和2019-06-30之间的天数,然后进行楼层除以14来实现这一点。
df['CHECKIN_DATE_TIME'] = pd.to_datetime(df.CHECKIN_DATE_TIME)
df['week'] = (df.CHECKIN_DATE_TIME - pd.datetime(2019, 6, 30)).dt.days // 14 + 1
df['last_week_day'] = (pd.to_timedelta(-((df.CHECKIN_DATE_TIME - pd.datetime(2019,6,30)).dt.days % 14) + 13 ,'d') + df.CHECKIN_DATE_TIME).dt.date
# note I've created my own test set.
ID CHECKIN_DATE_TIME week last_week_day
0 1 2019-06-30 13:36:00 1 2019-07-13
1 2 2019-07-10 10:36:00 1 2019-07-13
2 3 2019-07-12 02:36:00 1 2019-07-13
3 4 2019-07-18 18:36:00 2 2019-07-27
4 5 2019-07-30 11:36:00 3 2019-08-10
5 6 2019-08-01 20:36:00 3 2019-08-10编辑:根据请求在评论中添加last_week_day。这是通过使用模运算符%计算CHECKIN_DATE_TIME列所需的天数来实现的。
发布于 2021-07-21 19:21:55
使用熊猫的date_range功能,这是非常简单和有效的方式来生成日期列表,为每周,每两周或每月
import pandas as pd
from datetime import date,datetime,timedelta
date_rng=pd.date_range(start=date.today()-timedelta(weeks=53),end=date.today(), freq="2W-SAT")
for i in date_rng:
print(i)https://stackoverflow.com/questions/62661757
复制相似问题