Python Pandas-从BusinessHour偏移对象中以24小时格式显示自定义工作小时的结束时间
简介
Pandas是Python的一个开源数据分析包,提供了很多用于数据操作和处理的函数和方法,其中包括BusinessHour偏移对象,可以指定自定义的工作日上班时间和休息时间。
在使用BusinessHour对象计算日期偏移的工作时间时,需要指定自定义的工作小时结束时间,以便计算到达下一个工作小时的时间。本文将介绍如何使用Python Pandas中的BusinessHour偏移对象并通过自定义的工作小时结束时间以24小时格式显示。
BusinessHour偏移对象
Pandas提供了BusinessHour偏移对象,它可以用来计算时间偏移。BusinessHour对象本质上是时间偏移的一种,它是根据给定的工作日上班时间和工作日休息时间来计算时间偏移。比如计算当下一个工作日的偏移量或者下一个工作小时的偏移量等。默认情况下,BusinessHour对象使用的是周一至周五的9点到17点作为工作时间,这也是许多数据分析师和金融分析师工作日的时间。如果需要自定义工作日和时间,可以使用pandas.tseries.offsets.CustomBusinessHour。
首先,需要导入pandas包:
import pandas as pd
生成一个BusinessHour对象:
bhour = pd.offsets.BusinessHour()
可以查看一下当前时间,这里我们使用了pandas.Timestamp()方法:
now = pd.Timestamp('2022-01-10 08:00')
假设我们要计算10个工作小时后的时间,可以使用如下代码:
later = now + bhour * 10
print(later)
输出结果如下:
Timestamp('2022-01-13 12:00:00')
这里我们可以看出,10个工作小时后的时间是2022年1月13日的中午12点,这是因为默认情况下,BusinessHour对象使用的是周一至周五的9点到17点作为工作时间。
如果需要自定义工作日和时间,可以使用pandas.tseries.offsets.CustomBusinessHour。
思路:创建CustomBusinessHour偏移对象,重写结束时间的方法,并计算时间偏移。
CustomBusinessHour偏移对象
CustomBusinessHour偏移对象是BusinessHour对象的衍生,是根据给定的工作日上班时间和工作日休息时间来计算时间偏移。与BusinessHour对象不同,CustomBusinessHour对象允许我们自定义工作日和休息日的时间。
需要导入pandas.tseries.offsets.CustomBusinessHour:
from pandas.tseries.offsets import CustomBusinessHour
可以使用如下代码创建一个自定义工作小时时间,设置为周一至周五的10点到16点:
cbhour = CustomBusinessHour(start='10:00', end='16:00', weekmask='Mon Tue Wed Thu Fri')
然后,同样使用pandas.Timestamp()方法查看当前时间:
now = pd.Timestamp('2022-01-10 08:00')
如果要计算10个工作小时后的时间,可以使用如下代码:
later = now + cbhour * 10
print(later)
这里的输出结果是:
Timestamp('2022-01-11 16:00:00')
这里我们可以看出,以自定义工作小时时间计算的10个工作小时后的时间是2022年1月11日的下午4点,这是因为我们设置自定义工作时间是10点到16点,而10个工作小时后的时间正好是下午4点。
以24小时格式显示结束时间
如果我们需要以24小时格式来显示自定义工作小时结束时间,可以使用strftime()方法。
假设我们要计算5个工作小时后的结束时间,并以24小时格式显示:
end_time = now + cbhour * 5
print(end_time.strftime('%Y-%m-%d %H:%M:%S'))
这里我们使用了strftime()方法,将计算得到的end_time以%Y-%m-%d %H:%M:%S的格式输出。
输出结果如下:
2022-01-10 15:00:00
这里我们可以看出,自定义工作小时的结束时间为2022年1月10日下午3点。
完整代码示例
import pandas as pd
from pandas.tseries.offsets import CustomBusinessHour
# 创建自定义工作小时时间
cbhour = CustomBusinessHour(start='10:00', end='16:00', weekmask='Mon Tue Wed Thu Fri')
# 查看当前时间
now = pd.Timestamp('2022-01-10 08:00')
# 计算10个工作小时后的时间
later = now + cbhour * 10
print(later)
# 计算5个工作小时后的结束时间,并以24小时格式显示
end_time = now + cbhour * 5
print(end_time.strftime('%Y-%m-%d %H:%M:%S'))
结论
本文介绍了如何使用Python Pandas中的BusinessHour偏移对象以及自定义工作小时时间,并且以24小时格式显示自定义工作小时的结束时间。在实际应用中,可以根据需要灵活使用BusinessHour对象和CustomBusinessHour对象,以计算日期时间偏移。
极客笔记