gpt4 book ai didi

python - Pandas:如何用前一个非空值和下一个非空值的平均值填写 n/a

转载 作者:太空宇宙 更新时间:2023-11-04 00:28:30 33 4
gpt4 key购买 nike

我的数据框中有一些 N/A 值

df = pd.DataFrame({'A':[1,1,1,3],
'B':[1,1,1,3],
'C':[1,np.nan,3,5],
'D':[2,np.nan, np.nan, 6]})
print(df)

A B C D
0 1 1 1.0 2.0
1 1 1 NaN NaN
2 1 1 3.0 NaN
3 3 3 5.0 6.0

如何用其列中前一个非空值和下一个非空值的平均值填充 n/a 值?比如C列的第二个值应该填成(1+3)/2=2

期望的输出:

    A   B   C   D
0 1 1 1.0 2.0
1 1 1 2.0 4.0
2 1 1 3.0 4.0
3 3 3 5.0 6.0

谢谢!

最佳答案

使用ffillbfill 正向和反向填充替换NaN,然后concatgroupby 按索引聚合 mean:

df1 = pd.concat([df.ffill(), df.bfill()]).groupby(level=0).mean()
print (df1)
A B C D
0 1 1 1.0 2.0
1 1 1 2.0 4.0
2 1 1 3.0 4.0
3 3 3 5.0 6.0

详细信息:

print (df.ffill())
A B C D
0 1 1 1.0 2.0
1 1 1 1.0 2.0
2 1 1 3.0 2.0
3 3 3 5.0 6.0

print (df.bfill())
A B C D
0 1 1 1.0 2.0
1 1 1 3.0 6.0
2 1 1 3.0 6.0
3 3 3 5.0 6.0

关于python - Pandas:如何用前一个非空值和下一个非空值的平均值填写 n/a,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46628892/

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