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')

请添加图片描述

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

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

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

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

在这里插入图片描述
2021国务院发布的假期日安排:
劳动节:5月1日至5日放假调休,共5天。4月25日(星期日)、5月8日(星期六)上班。
和结果的2021.5.8日为True说明为工作日上班,与规定相符。

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值