使用python,如何在两列中填写缺失的日期和数据

x6492ojm  于 2023-04-04  发布在  Python
关注(0)|答案(1)|浏览(149)

我有一个月/天时间的时间序列,后面跟着值。由于设备故障,某些时间缺失。我想替换这些时间(例如下面的21:00、01:00)并插入与它们关联的缺失值。执行此操作的好方法是什么?
数据如下所示:

03/31 19:00 68.0
03/31 20:00 68.0
03/31 22:00 70.0
03/31 23:00 68.0
04/01 00:00 69.0
04/01 02:00 70.0

"04/01 00:00"值是字符串,观测值是浮点数。
我使用以下命令将字符串日期转换为数字:date_number=datetime.strptime(col_1[i],'%m/%d %H:%M'),结果是"1900-03-31 19:00:00"。我可以对这些进行算术运算,找到空白,填充它们,并将nans放在另一列的相同位置,然后插值那些缺失的值。我相信有一种更有效,更标准的方法来解决这个问题,我想知道如何最好地做到这一点。

xlpyo6sf

xlpyo6sf1#

假设下面的dataframe:

>>> df
          Date  Value
0  03/31 19:00   68.0
1  03/31 20:00   68.0
2  03/31 22:00   70.0
3  03/31 23:00   68.0
4  04/01 00:00   69.0
5  04/01 02:00   70.0

你可以创建一个Series索引的Date来真正地在TimeSeries上工作:

df['Date'] = pd.to_datetime('2023/' + df['Date'], format='%Y/%m/%d %H:%M')
ts = df.set_index('Date')['Value'].resample('H').interpolate()

输出:

>>> ts
Date
2023-03-31 19:00:00    68.0
2023-03-31 20:00:00    68.0
2023-03-31 21:00:00    69.0  # <- HERE
2023-03-31 22:00:00    70.0
2023-03-31 23:00:00    68.0
2023-04-01 00:00:00    69.0
2023-04-01 01:00:00    69.5  # <- HERE
2023-04-01 02:00:00    70.0
Freq: H, Name: Value, dtype: float64

相关问题