Python根据往年可用的相同日期填充缺少的值

2024-04-25 07:47:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有dfDateTimeIndex(小时读数)以及3年的温度数据。你知道吗

Time                   Temp 
1/2/2017 13:00          31     
1/2/2017 14:00           NA     
1/2/2017 15:00           22    

现在,我想按如下方式替换缺失的温度读数:如果2017年2月1日下午2点的数据缺失,我想用2016年2月1日下午2点和2018年2月1日的数据填充这些缺失的值(求平均值)。注意,温度数据很大程度上取决于一天中的时间(显然),所以我认为这是最好的方法。你知道吗

我尝试过插值和ffill方法。插值大大低估了读数和ffill不工作,因为我有很长一段时间的缺失值。你知道吗


Tags: 数据方法dftime方式温度temp平均值
2条回答

尝试使用:

print(df.fillna(df['Temp'].mean()))

或使用:

print(df.ffill()['Temp'].add(df.bfill()['Temp']).div(2))

两种输出:

             Time  Temp
0  1/2/2017 13:00  31.0
1  1/2/2017 14:00  26.5
2  1/2/2017 15:00  22.0

您可以尝试将pandas.DataFrame.interpolateinplace=True一起使用。你知道吗

这可以为您提供不同的方法,您可以轻松地使用这些方法:

method : {‘linear’, ‘time’, ‘index’, ‘values’, ‘nearest’, ‘zero’,‘slinear’, ‘quadratic’, ‘cubic’, ‘barycentric’, ‘krogh’, ‘polynomial’, ‘spline’ ‘piecewise_polynomial’, ‘pchip’}

>>> df['Temp'].interpolate(inplace=True)
>>> df
             Time  Temp
0  1/2/2017 13:00  31.0
1  1/2/2017 14:00  26.5
2  1/2/2017 15:00  22.0

相关问题 更多 >