【发布时间】:2021-12-06 15:17:11
【问题描述】:
我有一个 pandas 数据框,其中包含大量每小时数据点。有几天,缺少数据 (NaN)。我想通过计算前一天和后一天同一时间段的平均值来插入丢失的每小时数据点的值(我已经做了一些分析,并认为这是合理的)。
数据示例如下:
| datetime | value |
|---|---|
| 2018-11-17 00:00:00 | 9.12 |
| 2018-11-17 01:00:00 | 8.94 |
| 2018-11-17 02:00:00 | 8.68 |
| 2018-11-17 03:00:00 | 8.19 |
| 2018-11-17 04:00:00 | 7.75 |
| 2018-11-17 05:00:00 | 7.35 |
| 2018-11-17 06:00:00 | 7.05 |
| 2018-11-17 07:00:00 | 6.55 |
| 2018-11-17 08:00:00 | 6.30 |
| 2018-11-17 09:00:00 | 6.28 |
| 2018-11-17 10:00:00 | 6.68 |
| 2018-11-17 11:00:00 | 7.64 |
| 2018-11-17 12:00:00 | 8.61 |
| 2018-11-17 13:00:00 | 9.44 |
| 2018-11-17 14:00:00 | 9.84 |
| 2018-11-17 15:00:00 | 9.62 |
| 2018-11-17 16:00:00 | 8.17 |
| 2018-11-17 17:00:00 | 6.16 |
| 2018-11-17 18:00:00 | 5.93 |
| 2018-11-17 19:00:00 | 5.36 |
| 2018-11-17 20:00:00 | 4.69 |
| 2018-11-17 21:00:00 | 4.36 |
| 2018-11-17 22:00:00 | 4.68 |
| 2018-11-17 23:00:00 | 4.86 |
| 2018-11-18 00:00:00 | NaN |
| 2018-11-18 01:00:00 | NaN |
| 2018-11-18 02:00:00 | NaN |
| 2018-11-18 03:00:00 | NaN |
| 2018-11-18 04:00:00 | NaN |
| 2018-11-18 05:00:00 | NaN |
| 2018-11-18 06:00:00 | NaN |
| 2018-11-18 07:00:00 | NaN |
| 2018-11-18 08:00:00 | NaN |
| 2018-11-18 09:00:00 | NaN |
| 2018-11-18 10:00:00 | NaN |
| 2018-11-18 11:00:00 | NaN |
| 2018-11-18 12:00:00 | NaN |
| 2018-11-18 13:00:00 | NaN |
| 2018-11-18 14:00:00 | NaN |
| 2018-11-18 15:00:00 | NaN |
| 2018-11-18 16:00:00 | NaN |
| 2018-11-18 17:00:00 | NaN |
| 2018-11-18 18:00:00 | NaN |
| 2018-11-18 19:00:00 | NaN |
| 2018-11-18 20:00:00 | NaN |
| 2018-11-18 21:00:00 | NaN |
| 2018-11-18 22:00:00 | NaN |
| 2018-11-18 23:00:00 | NaN |
| 2018-11-19 00:00:00 | 3.19 |
| 2018-11-19 01:00:00 | 2.60 |
| 2018-11-19 02:00:00 | 2.29 |
| 2018-11-19 03:00:00 | 1.97 |
| 2018-11-19 04:00:00 | 2.19 |
| 2018-11-19 05:00:00 | 3.09 |
| 2018-11-19 06:00:00 | 4.32 |
| 2018-11-19 07:00:00 | 4.87 |
| 2018-11-19 08:00:00 | 5.14 |
| 2018-11-19 09:00:00 | 5.55 |
| 2018-11-19 10:00:00 | 6.34 |
| 2018-11-19 11:00:00 | 7.43 |
| 2018-11-19 12:00:00 | 8.18 |
| 2018-11-19 13:00:00 | 8.53 |
| 2018-11-19 14:00:00 | 8.45 |
| 2018-11-19 15:00:00 | 7.94 |
| 2018-11-19 16:00:00 | 6.87 |
| 2018-11-19 17:00:00 | 5.56 |
| 2018-11-19 18:00:00 | 4.65 |
| 2018-11-19 19:00:00 | 4.18 |
| 2018-11-19 20:00:00 | 3.97 |
| 2018-11-19 21:00:00 | 3.98 |
| 2018-11-19 22:00:00 | 4.01 |
| 2018-11-19 23:00:00 | 4.00 |
因此,例如,2018-11-18 00:00:00 的期望输出将是 9.12 和 3.19 = 6.16 的平均值。在 2018 年 11 月 18 日当天的其他时间以此类推。
在 pandas 中是否有一种简单的方法可以做到这一点?理想情况下,使用一种可以应用于数据框中的整个列(特征)的方法,而不必切出一些数据,对其进行转换,然后替换(因为老实说,这对我来说会快得多在 excel 中执行此操作!)。
提前感谢您的帮助。
【问题讨论】:
标签: python pandas dataframe time-series interpolation