gpt4 book ai didi

Python:如何找到一年中的第 n 个工作日?

转载 作者:行者123 更新时间:2023-12-03 23:48:17 24 4
gpt4 key购买 nike

我在“本月的第 n 个工作日”上看到了很多类似的帖子,但我的问题与“一年中的第 n 个工作日”有关。

背景:
我有一个包含每日销售数据的表。有 3 列:日期、星期几(星期一、星期二、星期三等)和销售额。我想将第 1 年的第 n 个工作日与第 2 年相匹配,并以这种方式比较销售额。

  • 示例 1:01/06/2020 与 01/04/2021 匹配,都是当年的第一个星期一。
  • 示例 2:11/02/2019 与 10/31/2020 匹配,均为当年的第 44 个星期六。

  • 如您所见,我不能简单地执行“本月的第 n 个工作日”,因为有时匹配的第 n 个工作日会落在不同的月份(如 11/02/2019 和 10/31/2020 所示)。

    我正在操纵 Pandas 中的表格。我想知道是否有一种快速的方法可以让我创建一个列来帮助我计算“ 一年中的第 n 个工作日 ”,以便我以后可以根据该值进行匹配?

    谢谢你的帮助。

    最佳答案

    pandas 包有一些很好的时间/日期功能。

    例如

    import pandas as pd
    s = pd.date_range('2020-01-01', '2020-12-31', freq='D').to_series()
    print(s.dt.dayofweek)

    以整数形式为您提供工作日。
    2020-01-01    2
    2020-01-02 3
    2020-01-03 4
    2020-01-04 5
    2020-01-05 6
    2020-01-06 0
    2020-01-07 1
    2020-01-08 2
    2020-01-09 3
    2020-01-10 4

    (星期一=0)

    然后你可以做
    mondays = s.dt.dayofweek.eq(0) 

    如果您想找到一年中的第一个星期一,请使用。
    print(mondays.idxmax())                                                    
    Timestamp('2020-01-06 00:00:00', freq='D')

    或第 5 个星期一:
    n = 4                                                                           
    print(s[mondays].iloc[n])
    Timestamp('2020-02-03 00:00:00')

    如果您的销售数据框是 df然后要比较两个不同年份的前 5 个星期一的销售额,您可以执行以下操作:
    mondays = df['Date'].dt.dayofweek.eq(0)
    mondays_in_y1 = (df['Year'] == 2019) & mondays
    mondays_in_y2 = (df['Year'] == 2020) & mondays

    pd.DataFrame({
    2019: df.loc[mondays_in_y1, 'Sales'].values[:5],
    2020: df.loc[mondays_in_y2, 'Sales'].values[:5]
    })

    关于Python:如何找到一年中的第 n 个工作日?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61106105/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com