如何在Pandas中用均值插补缺失的小时时间序列行?
用前后紧邻行均值插补小时级缺失DataFrame
先确保你的DataFrame索引是datetime类型(如果还没转的话):
prices_df.index = pd.to_datetime(prices_df.index)重采样生成完整的1小时时间序列,缺失的时间戳会被补出来,对应值为NaN:
resampled_df = prices_df.resample('1H').asfreq()用前后紧邻行均值插补缺失值,有两种简便方法:
方法一:用线性插值(单个缺失值等价于前后均值)
单个缺失的小时行,线性插值结果就是前后紧邻行的均值,还能限制只插补连续1个缺失值:filled_df = resampled_df.interpolate(method='linear', limit=1)方法二:手动计算前后行的平均
直接取缺失值的前一行和后一行数值的平均,逻辑更直观:filled_df = resampled_df.fillna( (resampled_df.shift(1) + resampled_df.shift(-1)) / 2 )
注意:如果存在连续多个缺失小时的情况,第二种方法会让这些连续缺失值保持NaN(因为中间缺失值的前后行可能也是NaN),可以根据你的实际需求调整逻辑。
内容的提问来源于stack exchange,提问作者Ferdinando Randisi
相关产品推荐
相关产品推荐

