gpt4 book ai didi

Pandas 滞后多指数不规则时间序列数据按月数

转载 作者:行者123 更新时间:2023-12-04 13:35:31 25 4
gpt4 key购买 nike

我有以下 Pandas 数据框

df = pd.DataFrame(data = {
'item': ['red','red','red','blue','blue'],
'dt': pd.to_datetime(['2018-01-31', '2018-02-28', '2018-03-31', '2018-01-31', '2018-03-31']),
's': [3.2, 4.8, 5.1, 5.3, 5.8],
'r': [1,2,3,4,5],
't': [7,8,9,10,11],
})

看起来像

item dt s r t
0 red 2018-01-31 3.2 1 7
1 red 2018-02-28 4.8 2 8
2 red 2018-03-31 5.1 3 9
3 blue 2018-01-31 5.3 4 10
4 blue 2018-03-31 5.8 5 11

请注意,时间点是不规则的:“蓝色”缺少 2 月数据。所有日期都是有效的月末日期。

我想添加一个列,它是“两个月前的值”,理想情况下类似于
df['s_lag2m'] = df.set_index(['item','dt'])['s'].shift(2, 'M')

我会得到
    item    dt          s   r   t   s_lag2m
0 red 2018-01-31 3.2 1 7 NaN
1 red 2018-02-28 4.8 2 8 NaN
2 red 2018-03-31 5.1 3 9 3.2
3 blue 2018-01-31 5.3 4 10 NaN
4 blue 2018-03-31 5.8 5 11 5.3

但这不起作用;它抛出 NotImplementedError: Not supported for type MultiIndex .

我怎样才能做到这一点?

最佳答案

我们可以做 reindex之后 set_index只有 dt

df['New']=df.set_index(['dt']).groupby('item')['s'].shift(2, 'M').\
reindex(pd.MultiIndex.from_frame(df[['item','dt']])).values
df
item dt s r t New
0 red 2018-01-31 3.2 1 7 NaN
1 red 2018-02-28 4.8 2 8 NaN
2 red 2018-03-31 5.1 3 9 3.2
3 blue 2018-01-31 5.3 4 10 NaN
4 blue 2018-03-31 5.8 5 11 5.3

关于 Pandas 滞后多指数不规则时间序列数据按月数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62315213/

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