【问题标题】:Pandas Business Day Offset: Request for Simple ExamplePandas 工作日偏移:请求简单示例
【发布时间】:2020-06-14 04:08:41
【问题描述】:

我有一个带有日期时间索引的数据框“df”。以下是其尺寸的粗略快照:

            V1  V2  V3  V4  V5
1/12/2008   4   15  11  7   1
1/13/2008   5   2   8   7   1
1/14/2008   13  13  9   6   4
1/15/2008   14  15  12  9   3
1/16/2008   1   10  2   12  15
1/17/2008   10  5   9   9   1
1/18/2008   13  11  5   7   2
1/19/2008   2   6   7   9   6
1/20/2008   5   4   14  3   7
1/21/2008   11  11  4   7   15
1/22/2008   9   4   15  10  3
1/23/2008   2   13  13  10  3
1/24/2008   12  15  14  12  8
1/25/2008   1   4   2   6   15

索引中的某些日子是周末和节假日。

我想将“df”的日期时间索引中的所有日期移至它们各自最近的(美国)工作日(即周一至周五,不包括节假日)。

您会如何建议我这样做?我知道 Pandas 有一个 "timeseries offset" 设施。但是,我还没有找到一个可以引导新手阅读的示例。

你能帮忙吗?

【问题讨论】:

    标签: python pandas datetime indexing


    【解决方案1】:

    我不熟悉这个类,但是在查看源代码之后,实现这一点似乎相当简单。请记住,它会选择下一个最近的工作日,这意味着星期六变成星期一而不是星期五。同样使您的索引不唯一将在您的 DataFrame 上 decrease performance,因此我建议将这些值分配给一个新列。

    一个先决条件是您必须确保您的索引是这三种类型中的任何一种,datetimetimedelta, pd.tseries.offsets.Tick

    offset = pd.tseries.offsets.CustomBusinessDay(n=0)
    
    df.assign(
        closest_business_day=df.index.to_series().apply(offset)
    )
    
                V1  V2  V3  V4  V5 closest_business_day
    2008-01-12   4  15  11   7   1           2008-01-14
    2008-01-13   5   2   8   7   1           2008-01-14
    2008-01-14  13  13   9   6   4           2008-01-14
    2008-01-15  14  15  12   9   3           2008-01-15
    2008-01-16   1  10   2  12  15           2008-01-16
    2008-01-17  10   5   9   9   1           2008-01-17
    2008-01-18  13  11   5   7   2           2008-01-18
    2008-01-19   2   6   7   9   6           2008-01-21
    2008-01-20   5   4  14   3   7           2008-01-21
    2008-01-21  11  11   4   7  15           2008-01-21
    2008-01-22   9   4  15  10   3           2008-01-22
    2008-01-23   2  13  13  10   3           2008-01-23
    2008-01-24  12  15  14  12   8           2008-01-24
    2008-01-25   1   4   2   6  15           2008-01-25
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-28
      • 1970-01-01
      • 2013-04-15
      • 2010-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-25
      相关资源
      最近更新 更多