【问题标题】:Pandas- Adding a specific amount of weeks to a datePandas - 将特定周数添加到日期
【发布时间】:2022-02-18 02:40:39
【问题描述】:

我想在 df 中添加一个新列,它将前一个日期添加一周。

我有什么:

start_date         num_of_weeks      

01/5/2019.        1

01/12/2019.       2
01/12/2019.       2

01/19/2019.       3. 
01/19/2019.       3
01/19/2019.       3

对于与每个 start_date 对应的 num_of_weeks,我想在该日期添加一周(7 天)。

所以如果 num_of_weeks = 3 那么


week1 = start_date + 7
week2 = week1 +7
week3 = week2 + 7

** 所需输出 = **



start_date         num_of_weeks          weeks

01/5/2019.        1                      01/12/2019

01/12/2019.       2                      01/19/2019
01/12/2019.       2                      01/26/2019

01/19/2019.       3.                     01/26/2019
01/19/2019.       3.                     02/04/2019
01/19/2019.       3                      02/11/2019


【问题讨论】:

    标签: python pandas date datetime time


    【解决方案1】:

    首先,我们将按"start_date" 分组并创建某种“子索引”,以使用pd.Series.rank 为每一行分配一个数字。这个新值将向我们显示每行要添加多少周:

    >> df["extra_weeks"] = df.groupby("start_date").rank("first", ascending=False)
    >> df
      start_date  num_of_weeks  extra_weeks
    0 2019-01-05             1          1.0
    1 2019-01-12             2          1.0
    2 2019-01-12             2          2.0
    3 2019-01-19             3          1.0
    4 2019-01-19             3          2.0
    5 2019-01-19             3          3.0
    

    现在,您可以在 "extra_weeks" 列上使用 pd.to_timedelta 并将该结果添加到您的 "start_date" 列:

    >> df["weeks"] = df["start_date"] + pd.to_timedelta(df["extra_weeks"], unit="w")
    >> df
      start_date  num_of_weeks  extra_weeks      weeks
    0 2019-01-05             1          1.0 2019-01-12
    1 2019-01-12             2          1.0 2019-01-19
    2 2019-01-12             2          2.0 2019-01-26
    3 2019-01-19             3          1.0 2019-01-26
    4 2019-01-19             3          2.0 2019-02-02
    5 2019-01-19             3          3.0 2019-02-09
    

    【讨论】:

      【解决方案2】:

      这是利用dateutil 库的好机会。具体来说,您会对 relativedelta 函数感兴趣。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-26
        • 1970-01-01
        • 2018-10-20
        • 1970-01-01
        • 1970-01-01
        • 2013-11-25
        • 1970-01-01
        相关资源
        最近更新 更多