gpt4 book ai didi

python:指定观察周围的窗口

转载 作者:太空宇宙 更新时间:2023-11-03 14:58:13 25 4
gpt4 key购买 nike

我有以下数据框:

 id     indicator  
1 NaN
1 NaN
1 1
1 NaN
1 NaN
1 NaN
1 1
1 NaN
1 NaN
1 NaN

实际上我有几个 id。我现在想要向前填充接下来 2 列的指示符列,但额外的是,向前填充每一步都会增加 1。结果应该如下所示:

 id     indicator  
1 NaN
1 NaN
1 1
1 2
1 3
1 NaN
1 1
1 2
1 3
1 NaN

我知道这个命令:

df.groupby("id")["indicator"].fillna(value=None, method="ffill", limit=3)

这个命令工作正常,但我不知道如何让它每一步增加 1,而不是仅仅结转旧值。有人可以帮忙吗?

编辑:我尝试了类似的方法,但得到了无效的语法。我可以移动 where 命令吗?

 for i in range(1,20):
df["indicator"].where(df["indicator"])==1).shift(+i) = i

这不是 Forward/Backward fill na by incrementing/decrementing last found value? 的重复项,因为增量没有限制。在这里,我基本上希望每当指标为 1 时就标记一个窗口 +-2。

最佳答案

使用groupbyffillcumsumcumcount:

print(df)

id indicator
0 1 NaN
1 1 NaN
2 1 1.0
3 1 NaN
4 1 NaN
5 1 NaN
6 1 1.0
7 1 NaN
8 1 NaN
9 1 NaN


df_fill = df.groupby('id')['indicator'].ffill(limit=2)
df_fill.groupby(by=df_fill.ne(1).cumsum()).cumcount().replace(0,np.nan)

输出:

0    NaN
1 NaN
2 1.0
3 2.0
4 3.0
5 NaN
6 1.0
7 2.0
8 3.0
9 NaN
dtype: float64

关于python:指定观察周围的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45350436/

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