我有降水预报,但只预报早晨和晚上:
2022-06-08 00:00:00 NaN
2022-06-08 01:00:00 NaN
2022-06-08 02:00:00 NaN
2022-06-08 03:00:00 NaN
2022-06-08 04:00:00 NaN
2022-06-08 05:00:00 NaN
2022-06-08 06:00:00 NaN
2022-06-08 07:00:00 0.03
2022-06-08 08:00:00 0.03
2022-06-08 09:00:00 0.03
2022-06-08 10:00:00 NaN
2022-06-08 11:00:00 NaN
2022-06-08 12:00:00 NaN
2022-06-08 13:00:00 NaN
2022-06-08 14:00:00 NaN
2022-06-08 15:00:00 NaN
2022-06-08 16:00:00 NaN
2022-06-08 17:00:00 NaN
2022-06-08 18:00:00 NaN
2022-06-08 19:00:00 0.00
2022-06-08 20:00:00 0.00
2022-06-08 21:00:00 0.00
2022-06-08 22:00:00 NaN
2022-06-08 23:00:00 NaN
2022-06-09 00:00:00 NaN
2022-06-09 01:00:00 NaN
2022-06-09 02:00:00 NaN
2022-06-09 03:00:00 NaN
2022-06-09 04:00:00 NaN
2022-06-09 05:00:00 NaN
2022-06-09 06:00:00 NaN
2022-06-09 07:00:00 0.01因为每个预报都是每日预报,所以我只想在每一天内填写。我可以
df['precipitation'] = df['precipitation'].groupby(pd.Grouper(freq = 'D')).ffill().bfill()但这对早晨的天气预报影响过大,也低估了整个晚上的重量。我想做这样的事
df['precipitation'] = df['precipitation'].interpolate(method = 'nearest')但按日期分组,这样天气预报就不会蔓延到另一天(这并不是预期的)。所需的输出类似于:
2022-06-08 00:00:00 0.03
2022-06-08 01:00:00 0.03
2022-06-08 02:00:00 0.03
2022-06-08 03:00:00 0.03
2022-06-08 04:00:00 0.03
2022-06-08 05:00:00 0.03
2022-06-08 06:00:00 0.03
2022-06-08 07:00:00 0.03
2022-06-08 08:00:00 0.03
2022-06-08 09:00:00 0.03
2022-06-08 10:00:00 0.03
2022-06-08 11:00:00 0.03
2022-06-08 12:00:00 0.03
2022-06-08 13:00:00 0.03
2022-06-08 14:00:00 0.00
2022-06-08 15:00:00 0.00
2022-06-08 16:00:00 0.00
2022-06-08 17:00:00 0.00
2022-06-08 18:00:00 0.00
2022-06-08 19:00:00 0.00
2022-06-08 20:00:00 0.00
2022-06-08 21:00:00 0.00
2022-06-08 22:00:00 0.00
2022-06-08 23:00:00 0.00
2022-06-09 00:00:00 0.01
2022-06-09 01:00:00 0.01
2022-06-09 02:00:00 0.01
2022-06-09 03:00:00 0.01
2022-06-09 04:00:00 0.01
2022-06-09 05:00:00 0.01
2022-06-09 06:00:00 0.01
2022-06-09 07:00:00 0.01发布于 2022-06-08 15:59:36
您可以简单地将插值应用于您的组:
df.groupby(pd.Grouper(freq = 'D')).apply(pd.DataFrame.interpolate, method = 'nearest')
或者使用lambda函数
df.groupby(pd.Grouper(freq = 'D')).apply(lambda group: group.interpolate(method = 'nearest'))
请注意,在大型数据文件上的表现可能会很糟糕。
https://stackoverflow.com/questions/72548502
复制相似问题