首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在每一天内使用最近的值来填充day?

如何在每一天内使用最近的值来填充day?
EN

Stack Overflow用户
提问于 2022-06-08 15:35:49
回答 1查看 29关注 0票数 0

我有降水预报,但只预报早晨和晚上:

代码语言:javascript
复制
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

因为每个预报都是每日预报,所以我只想在每一天内填写。我可以

代码语言:javascript
复制
df['precipitation'] = df['precipitation'].groupby(pd.Grouper(freq = 'D')).ffill().bfill()

但这对早晨的天气预报影响过大,也低估了整个晚上的重量。我想做这样的事

代码语言:javascript
复制
df['precipitation'] = df['precipitation'].interpolate(method = 'nearest')

但按日期分组,这样天气预报就不会蔓延到另一天(这并不是预期的)。所需的输出类似于:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 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'))

请注意,在大型数据文件上的表现可能会很糟糕。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72548502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档