根据日期时间在熊猫中找到最接近的值

时间:2019-04-22 05:25:07

标签: python pandas

我们有一个传感器,当另一个传感器告诉它时,它会记录“ x”。这意味着,在一小时内以随机时间和随机频率进行观察。数据如下所示

> df
date         time        x
1/1/2018     00:24:12    10
1/1/2018     00:47:17    14
1/1/2018     1:17:11     12
1/1/2018     1:34:34     17
1/1/2018     1:52:23     15
1/1/2018     2:10:59     12

,依此类推,直到2018年1月31日。为了将其与另一个数据集进行比较,我想查找最接近小时标记的时间记录的值。例如:

date         time     x
1/1/2018      00      10
1/1/2018      01      14 (Since 00:47:17 is -13 minutes to 01 as compared to 1:17:11 which is + 17 minutes)
1/1/2018      02      15

1 个答案:

答案 0 :(得分:1)

首先创建DatetimeIndex,然后使用date_range创建Timestamp.floor,最后使用method='nearest'创建DataFrame.reindex

df.index = pd.to_datetime(df['date'] + ' ' + df['time'])
rng = pd.date_range(df.index.min().floor('H'), df.index.max().floor('H'), freq='H')

df = df.reindex(rng, method='nearest')
print (df)
                         date      time   x
2018-01-01 00:00:00  1/1/2018  00:24:12  10
2018-01-01 01:00:00  1/1/2018  00:47:17  14
2018-01-01 02:00:00  1/1/2018   1:52:23  15

最后一次删除DatetimeIndex

df = df.reindex(rng, method='nearest').reset_index(drop=True)
print (df)
       date      time   x
0  1/1/2018  00:24:12  10
1  1/1/2018  00:47:17  14
2  1/1/2018   1:52:23  15