使用 Python 获取最近的前一个工作日

pythonserver side programmingprogramming

在当今快节奏的商业环境中,由于世界各地有大量的工作要做,开发人员需要准确分析最新的日期。工作日与正常日子不同。工作日与正常日子不同。通常是办公室工作的日子,如股市、政府官员、学校、办公室、银行等。在处理涉及此类机构的实际问题时,开发人员必须根据工作日设计系统。本文将解释如何在 Python 中获取最近的工作日。

使用日期时间库

日期时间是一个流行的 Python 库,它允许我们处理日期、时间、时间戳等。它允许我们对日期进行操作、格式化和执行多项计算和操作。该库为我们提供了多个类,如日期时间、日期、时间、时间增量,以处理不同类型的操作。我们可以使用"今天"日期时间方法来访问当前日期。由于通常一周有五个工作日,我们可以编写程序来仅访问前一天,这属于工作日类别。

语法

timedelta(days = <number of days>)

此处的 time delta 是 time delta 模块提供的类。它表示两个日期或时间之间的差异。days 参数以整数形式接受天数作为我们需要日期相差的天数的持续时间。

示例

我们首先在以下示例中导入日期时间和时间增量类。我们定义了 get_previous_day 函数,该函数根据当前日期计算前一个工作日。"today"方法检索当前日期;time delta 方法返回传递的参数延迟的前一天。我们传递的参数是 1,这意味着我们想要前一天。使用 while 语句,我们只接受当天,这也属于工作日类别。我们使用"开始时间"方法以年月日格式返回前一个工作日。

from datetime import datetime, timedelta
def get_previous_business_day():
    today = datetime.today()
    one_day = timedelta(days=1)
    previous_day = today - one_day
    while previous_day.weekday() >= 5: 
        previous_day -= one_day
    return previous_day.strftime("%Y-%m-%d")
print(f"The previous business day is: {get_previous_business_day()}")

输出

The previous business day is: 2023-05-26

使用 Pandas 库的日期偏移量

Pandas 是 Python 中流行的数据分析库。它还提供了一种处理时间的便捷方式。Pandas 的 Timestamp 方法可以将日期转换为 Timestamp 对象 - pd.t 系列。Pandas 中的 offsets 模块提供了 Business Day 类,代表单个工作日。通过指定 n 参数,值为 1,您可以创建一个代表一个工作日的 Business Day 对象。

语法

pd.DateOffset(days=<number of days>)

Data Offset 类以天数为必需参数。它表示代表特定天数的时间偏移量。 Date Offset 对象允许您通过添加或减去特定天数和其他时间组件(如果需要)来执行日期算术。

示例代码

我们在以下代码中使用 Pandas 库来获取前一个工作日。我们创建了名为 get_previous_business_day 的函数。在此函数下,我们使用 today 方法获取当前日期。我们使用 Date Offset 来移动日期。我们使用 b date_range 方法和 periods=1 参数来指定我们想要前一个工作日。

import pandas as pd
def get_previous_business_day():
    today = pd.Timestamp.today()
    previous_day = today - pd.DateOffset(days=1)
    previous_business_day = pd.bdate_range(end=previous_day, periods=1)[0]
    return previous_business_day.strftime("%Y-%m-%d")
print(f"The previous business day is: {get_previous_business_day()}")

输出

The previous business day is: 2023-05-26

使用 Pandas 库中的"工作日"方法

Panda 库中的"工作日"方法是处理工作日和使用自定义日历的强大工具。您必须先创建一个"工作日"对象;此方法下的每个日期代表一个工作日(不包括周末)。

语法

pd.tseries.offsets.BusinessDay(<number of days>)

该函数定义一个时间偏移量,代表一个工作日。该函数负责处理周末(星期六和星期日)。该函数将工作日类别下的天数作为参数

示例

在下面的示例中,我们指定了日期"2023-05-28"。我们需要计算此日期之前的前一个工作日。我们调用 get_previous_business_day 函数,并以 date_to-offset 作为参数。在该函数下,我们仅使用 Business Day 方法来延迟与工作日相关的日期。请注意,我们不需要明确为工作日编写一些代码。该方法负责

import pandas as pd
def get_previous_business_day(date):
    previous_business_day = date - pd.tseries.offsets.BusinessDay(1)
    return previous_business_day
date_to_offset = pd.Timestamp('2023-05-28')
previous_business_day = get_previous_business_day(date_to_offset)
print(f"The previous business day is: {previous_business_day}")

输出

The previous business day is − 2023-05-26

结论

在本文中,我们了解了如何使用 Python 获取最近的工作日。Python 提供了多个库和模块来处理工作日。我们可以使用日期时间、pandas 等来处理工作日。所有这些库都具有内置函数,使开发人员能够访问工作日。但是,还应该知道,工作日全年都是灵活的。偶尔会有假期,因此开发人员可能需要使用一些第三方 API 密钥或将代码与实时数据对齐。


相关文章