gpt4 book ai didi

python - Pandas ffill/bfill 用于特定数量的观察

转载 作者:行者123 更新时间:2023-11-28 21:40:40 24 4
gpt4 key购买 nike

我有以下数据框:

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

其实我还有好几个id。我现在的问题是,如何针对特定范围进行向前或向后填充,例如仅针对下一个/最后 2 个观察结果。我的数据框应该是这样的:

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

我知道命令

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

但是,这会填充所有缺失值,而不仅仅是接下来的两个观察值。有人知道解决方案吗?

最佳答案

我认为DataFrameGroupBy.ffillDataFrameGroupBy.bfill使用 limit 参数更好:

df.groupby("id")["indicator"].ffill(limit=3)

df.groupby("id")["indicator"].bfill(limit=3)

示例:

#5 value is in the end of group, so only one value is filled 
df['filled'] = df.groupby("id")["indicator"].ffill(limit=2)
print (df)
id indicator filled
0 1 NaN NaN
1 1 NaN NaN
2 1 1.0 1.0
3 1 NaN 1.0
4 1 NaN 1.0
5 1 NaN NaN
6 1 NaN NaN
7 1 NaN NaN
8 1 4.0 4.0
9 1 NaN 4.0
10 1 NaN 4.0
11 1 NaN NaN
12 1 NaN NaN
13 2 NaN NaN
14 2 NaN NaN
15 2 1.0 1.0
16 2 NaN 1.0
17 2 NaN 1.0
18 2 NaN NaN
19 2 5.0 5.0
20 2 NaN 5.0
21 3 3.0 3.0
22 3 NaN 3.0
23 3 NaN 3.0
24 3 NaN NaN
25 3 NaN NaN

关于python - Pandas ffill/bfill 用于特定数量的观察,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45343153/

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