【问题标题】:Lagging by date in Pandas在 Pandas 中按日期滞后
【发布时间】:2017-11-03 02:43:29
【问题描述】:

我有一个熊猫数据框。下面显示的 LAG_VAL 是我的结果应该是什么样子。

A     DT           VAL  LAG_VAL
1     2017-01-10    1     nan
1     2018-01-10    2      1
2     2017-01-10    1     nan
2     2018-01-10    2      1
2     2019-01-10    3      2

我运行下面的代码,但它给了我所有的 nan 值。

df['LAG_VAL'] = df.groupby(['A','DT'])['VAL'].shift(1)

我已经确定 DT 的数据类型是 datetime64[ns]。我还确保在移动之前对数据框进行了排序。

df.sort(['A,'DT], inplace=True)   

【问题讨论】:

标签: python pandas lag shift


【解决方案1】:

您只想按“A”分组:

In [11]: df.groupby(['A'])['VAL'].shift(1)
Out[11]:
0    NaN
1    1.0
2    NaN
3    1.0
4    2.0
Name: VAL, dtype: float64

您可能想要的是按偏移量而不是按位置移动:

In [21]: df1 = df.set_index("DT")

In [22]: df1.groupby(['A'])['VAL'].shift(freq=pd.offsets.YearBegin(1))
Out[22]:
A  DT
1  2018-01-01    1
   2019-01-01    2
2  2018-01-01    1
   2019-01-01    2
   2020-01-01    3
Name: VAL, dtype: int64

【讨论】:

    猜你喜欢
    • 2017-02-21
    • 1970-01-01
    • 2019-07-25
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 2013-05-15
    • 1970-01-01
    相关资源
    最近更新 更多