python pandas 怎么判断一天是否为工作日+计算距离特定时间之间的天数

本文实现:
①计算距离特定时间之间的天数。
②时间是否为工作日。

准备数据:
数据采用的是一个平台的登录数据,包含登录的时间。
任务的要求是:选取用户最近的登录时间,同时判断距2020,6,18的天数有多少天。
同时需要区分是否为工作日登录。

导入数据

# 作者:yunmen
# 日期:2021年10月20日
#导入模块
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')

python pandas 怎么判断一天是否为工作日+计算距离特定时间之间的天数_第1张图片

①计算距离特定时间之间的天数

将日期的数据格式进行转化

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()]

结果如下图:
python pandas 怎么判断一天是否为工作日+计算距离特定时间之间的天数_第2张图片

②判断日期是否为工作日
chinese_calendar模块的is_workday函数可以判断一天是否为工作日
#采用的测试数据为20210501-20210531

import pandas as pd
from chinese_calendar import is_workday

#采用的测试数据为20210501-20210531
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))

python pandas 怎么判断一天是否为工作日+计算距离特定时间之间的天数_第3张图片
2021国务院发布的假期日安排:
劳动节:5月1日至5日放假调休,共5天。4月25日(星期日)、5月8日(星期六)上班。
和结果的2021.5.8日为True说明为工作日上班,与规定相符。

你可能感兴趣的:(python,python,数据分析,pandas)