本文实现: ①计算距离特定时间之间的天数。 ②时间是否为工作日。
准备数据: 数据采用的是一个平台的登录数据,包含登录的时间。 任务的要求是:选取用户最近的登录时间,同时判断距2020,6,18的天数有多少天。 同时需要区分是否为工作日登录。
导入数据
import pandas as pd
from chinese_calendar import is_workday, is_holiday,is_in_lieu
data=pd.read_csv(r'C:\Users\yunmen\Desktop\login.csv',sep=',',encoding='gbk')
①计算距离特定时间之间的天数。
将日期的数据格式进行转化
data['login_time']=pd.to_datetime(data['login_time'])
将dataframe进行按照用户ID进行分组,同时分组后的数据采用的是最大值(这样就可以实现:选取用户最近的登录时间)
tem_day=pd.to_datetime('2020-06-18 00:00:00 ' )
da=data.groupby('user_id').max()
计算计算距离2020,6,18的天数有多少天。
da['losing_day']=tem_day-da['login_time']
da['losing_day']=[i.days for i in da['losing_day'].to_list()]
结果如下图:
②判断日期是否为工作日: chinese_calendar模块的is_workday函数可以判断一天是否为工作日 #采用的测试数据为20210501-20210531
import pandas as pd
from chinese_calendar import is_workday
date_one=pd.date_range('20210501','20210531')
a=pd.DataFrame()
a['date']=date_one
a['date'].map(lambda x:is_workday(x))
a['is_workday']=a['date'].map(lambda x:is_workday(x))
2021国务院发布的假期日安排: 劳动节:5月1日至5日放假调休,共5天。4月25日(星期日)、5月8日(星期六)上班。 和结果的2021.5.8日为True说明为工作日上班,与规定相符。
|