如何检查日期是否在星期范围内? [英] how to check if date lies within week range?

查看:103
本文介绍了如何检查日期是否在星期范围内?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

因此,如果退出日期在一周范围内,那么我需要返回布尔值True或false,这样我就可以继续求和给定退出日期的预订值

So I need to return a boolean True or false if a Exit date lies within a week range so I can then go on to sum a booking value for a given Exit date

week_start      week_end

0 2019-05-01    2019-05-08

1 2019-05-08    2019-05-15

2 2019-05-15    2019-05-22

3 2019-05-22    2019-05-29

4 2019-05-29    2019-06-05

week_start    datetime64[ns]

week_end      datetime64[ns]

下面的退出日期是否在上述给定的周范围内,如果总和预订值^^

Does the below exit date lie within the given week ranges above if so sum booking value ^^

Exit_date = [ '2019-05-19','2019-05-27', '2019-05-26', '2019-05-28', '2019-05-27','2019-05-27', '2019-05-22', '2019-05-18', '2019-05-25',  '2019-05-25',  '2019-05-17', ' 2019-05-25']

booking_cost = ['113.3250','68.3250', '62.4900','80.9917', '79.9900', '41.6600', '50.8250','41.6600', '50.8250','68.3200','68.3200','114.9920']

data ={'Exit_date': Exit_date, 'booking_cost': booking_cost}


Exit_df = pd.DataFrame(data, columns=['Exit_date','booking_cost' ]) # exit date date frame
Exit_df['Exit_date'] = pd.to_datetime(Exit_df['Exit_date'])

print(Exit_df.head())



years = int('2019') #yyyy
months = int('05') #mm
dayss = int('01')   #dd
Start_Date = datetime.date(years, months, dayss)#user selects date


n = [0,1,2,3,4]
week_start=[]
week_end=[]
for elements in n:      #loop to create 4 week period from selected date
    week_n_start = Start_Date
    week_n_end = Start_Date + timedelta(days=7)

    week_start.append(week_n_start)
    week_end.append(week_n_end)

    Start_Date=week_n_end


user_dates =  {'week_start' : week_start , 'week_end' :week_end}


daterange_df = pd.DataFrame(user_dates) # creates data frame of 4 week period
daterange_df['week_start'] = pd.to_datetime(daterange_df['week_start'])
daterange_df['week_end'] = pd.to_datetime(daterange_df['week_end'])

print(daterange_df)

因此,如果退出日期在星期范围内,则我要对预订值进行加总。 。

So if the Exit Date lies with in the week range I will then want to sum the booking value ... something like this

Total_Sales =0
if daterange_df['week_start'] <= parking_master['Exit_Date'] <= daterange_df['week_end'] :
  Total_Sales=+Exit_df['Booking Cost']
print(Total_Sales)

谢谢

推荐答案

使用 Series.between 列表理解为总和为计数真实 s-匹配退出日期值:

Use Series.between in list comprehension with sum for count Trues - matched Exit_Date values:

z = zip(daterange_df['week_start'], daterange_df['week_end'])
daterange_df['count'] = [parking_master['Exit_Date'].between(s, e).sum() for s, e in z]
print (daterange_df)
  week_start   week_end  count
0 2019-05-01 2019-05-08      0
1 2019-05-08 2019-05-15      0
2 2019-05-15 2019-05-22      4
3 2019-05-22 2019-05-29     12
4 2019-05-29 2019-06-05      0

这篇关于如何检查日期是否在星期范围内?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆