gpt4 book ai didi

python - Pandas Rolling Groupby 移回 1,试图滞后于滚动总和

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

我正在尝试获取同一 ID 的过去 3 行的滚动总和,但滞后 1 行。我的尝试看起来像下面的代码,我是专栏。必须有一种方法可以做到这一点,但这种方法似乎不起作用。

for i in df.columns.values:
df.groupby('Id', group_keys=False)[i].rolling(window=3, min_periods=2).mean().shift(1)


id dollars lag

1 6 nan
1 7 nan
1 6 6.5
3 7 nan
3 4 nan
3 4 5.5
3 3 5
5 6 nan
5 5 nan
5 6 5.5
5 12 5.67
5 7 8.3

最佳答案

I am trying to get a rolling sum of the past 3 rows for the same ID but lagging this by 1 row.

您可以通过链接 DataFrame.groupby(ID) 来创建滞后滚动总和,.shift(1)对于滞后 1,.rolling(3)用于窗口 3,.sum() 用于求和。

示例:假设您的数据集是:

import pandas as pd
# Reproducible datasets are your friend!
d = pd.DataFrame({'grp':pd.Series(['A']*4 + ['B']*5 + ['C']*6),
'x':pd.Series(range(15))})
print(d)
 grp   x
A 0
A 1
A 2
A 3
B 4
B 5
B 6
B 7
B 8
C 9
C 10
C 11
C 12
C 13
C 14

我想你要的是这个:

d['y'] = d.groupby('grp')['x'].shift(1).rolling(3).sum()
print(d)
 grp   x     y
A 0 NaN
A 1 NaN
A 2 NaN
A 3 3.0
B 4 NaN
B 5 NaN
B 6 NaN
B 7 15.0
B 8 18.0
C 9 NaN
C 10 NaN
C 11 NaN
C 12 30.0
C 13 33.0
C 14 36.0

关于python - Pandas Rolling Groupby 移回 1,试图滞后于滚动总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54354569/

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