gpt4 book ai didi

python - pandas 通过非 nan 值之前和之后填充 nans

转载 作者:IT老高 更新时间:2023-10-28 20:27:21 26 4
gpt4 key购买 nike

我想用相邻元素的平均值填充 dfnan

考虑一个数据框:

df = pd.DataFrame({'val': [1,np.nan, 4, 5, np.nan, 10, 1,2,5, np.nan, np.nan, 9]})
val
0 1.0
1 NaN
2 4.0
3 5.0
4 NaN
5 10.0
6 1.0
7 2.0
8 5.0
9 NaN
10 NaN
11 9.0

我想要的输出是:

    val
0 1.0
1 2.5
2 4.0
3 5.0
4 7.5
5 10.0
6 1.0
7 2.0
8 5.0
9 7.0 <<< deadend
10 7.0 <<< deadend
11 9.0

我研究了其他解决方案,例如 Fill cell containing NaN with average of value before and after ,但在两个或多个连续 np.nan 的情况下这将不起作用。

非常感谢任何帮助!

最佳答案

使用 ffill + bfill并除以 2:

df = (df.ffill()+df.bfill())/2

print(df)
val
0 1.0
1 2.5
2 4.0
3 5.0
4 7.5
5 10.0
6 1.0
7 2.0
8 5.0
9 7.0
10 7.0
11 9.0

编辑:如果第一个和最后一个元素包含 NaN 然后使用 (Dark 建议):

df = pd.DataFrame({'val':[np.nan,1,np.nan, 4, 5, np.nan, 
10, 1,2,5, np.nan, np.nan, 9,np.nan,]})
df = (df.ffill()+df.bfill())/2
df = df.bfill().ffill()

print(df)
val
0 1.0
1 1.0
2 2.5
3 4.0
4 5.0
5 7.5
6 10.0
7 1.0
8 2.0
9 5.0
10 7.0
11 7.0
12 9.0
13 9.0

关于python - pandas 通过非 nan 值之前和之后填充 nans,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54414269/

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