如何使用前3个值的滚动均值填充Pandas DataFrame中rate列的缺失值
嘿,这个需求不难实现!我来给你一步步拆解怎么用Pandas完成rate列缺失值替换为前3个值滚动均值的操作:
实现思路
核心就是利用Pandas的滚动窗口计算和缺失值填充两个功能:
- 用
rolling(window=3)创建一个向前滚动的窗口,窗口大小为3,对应“前3个值”的要求 - 用
mean()计算每个窗口的均值,设置min_periods=1确保即使窗口里有效数据不足3个,也能正常计算均值(避免出现新的缺失值) - 最后用
fillna()把原列的NaN替换成计算好的滚动均值
完整代码
import pandas as pd import numpy as np # 初始化你给出的原始DataFrame df = pd.DataFrame({ 'id': [1,2,3,4,5], 'rate': [0.5,0.4,0.5,np.nan,np.nan], }) # 计算窗口为3的滚动均值,min_periods=1处理边界情况 rolling_avg = df['rate'].rolling(window=3, min_periods=1).mean() # 用滚动均值填充rate列的缺失值 df['rate'] = df['rate'].fillna(rolling_avg) # 输出结果 print(df)
期望输出
运行代码后,你会得到如下结果:
id rate 0 1 0.500000 1 2 0.400000 2 3 0.500000 3 4 0.466667 # 前3个值(0.5+0.4+0.5)/3的计算结果 4 5 0.450000 # 前3个有效数值(0.4+0.5)/2的计算结果
内容的提问来源于stack exchange,提问作者kms
相关产品推荐
相关产品推荐

