【问题标题】:Pandas: get a value from previous year for the same day of the yearPandas:获取上一年同一天的值
【发布时间】:2018-05-11 21:27:18
【问题描述】:

我正在寻找一种方法来获取前一年同一天的价值。

F.e.我们有一个 2014-01-01 的值,我想创建一个新列,其中包含这一天的值,但从一年前开始。

表格样本,我想获取 Previos_Year 列。

   Date   Ticks Previos_Year 
2013-01-01  0        NaN
2013-01-02  1        NaN
2013-01-03  2        NaN
....
2014-01-01  3         0
2014-01-02  4         1

到目前为止我尝试了什么:

我创建了一年中的新列日,

df['Day_in_Year'] = df.Date.dt.dayofyear

但我不知道如何将它用于我的任务。

另外,我尝试了移位功能:

df['Ticks'].shift(365)

它可以工作,直到闰年......

【问题讨论】:

    标签: python pandas time-series


    【解决方案1】:

    你可以groupby月份和日期,然后shift

    df['Previous'] = df.groupby([df['Date'].dt.month,df['Date'].dt.day])['Value'].shift()
    

    样本输出:

            Date  Ticks  Value  Previous
    0 2013-01-01      0     99       NaN
    1 2013-01-02      1      0       NaN
    2 2013-01-03      2      5       NaN
    3 2014-01-01      3      0      99.0
    4 2014-01-02      4      1       0.0
    5 2014-01-03      2      5       5.0
    7 2014-01-04      2      5       NaN
    

    【讨论】:

    • 通常pandas的问题回答得更快。很高兴我得到了这个。
    • 如果我们想要上个月呢?如果您能解释这种方法,我将不胜感激。至少,我没弄明白! @黑暗
    猜你喜欢
    • 2015-08-24
    • 2020-10-07
    • 2022-07-22
    • 2019-11-11
    • 2016-10-07
    • 1970-01-01
    • 2018-01-14
    • 2017-08-19
    相关资源
    最近更新 更多