Python函数,用于在数据框中选择最接近选定时间的每日值

Python函数,用于在数据框中选择最接近选定时间的每日值,python,pandas,time,Python,Pandas,Time,我有一个很大的数据集,包含几十年来的地下水测量数据。每天有多次测量(有些每小时一次,有些每10/15分钟一次)。根据测量设备、网络使用和数据传输方法的不同,测量的准确时间可能会有所不同,并且(在大多数情况下)不会设置为秒 我目前正在寻找一种在数据库中显示数据的方法,该数据库每天只能显示每个位置的一个测量值。我正在寻找一种方法来选择每个位置最接近凌晨12点的每日值 pd.between_时间无法解决此问题,因为在某些情况下,在上午12点之前和之后都会进行测量。我想选择最接近12 am的值(12 a

我有一个很大的数据集,包含几十年来的地下水测量数据。每天有多次测量(有些每小时一次,有些每10/15分钟一次)。根据测量设备、网络使用和数据传输方法的不同,测量的准确时间可能会有所不同,并且(在大多数情况下)不会设置为秒

我目前正在寻找一种在数据库中显示数据的方法,该数据库每天只能显示每个位置的一个测量值。我正在寻找一种方法来选择每个位置最接近凌晨12点的每日值

pd.between_时间无法解决此问题,因为在某些情况下,在上午12点之前和之后都会进行测量。我想选择最接近12 am的值(12 am之前或之后)

由于数据集的大小,性能需要快速。对于for循环,有一些方法可以解决这个问题,但是性能会很慢

下面是数据集的一小部分

        Time                 B33
 0      2017-11-26 11:30:03  -2.57
 1      2017-11-26 11:45:01  -2.58
 2      2017-11-26 12:00:02  -2.58
 3      2017-11-26 12:15:04  -2.58
 4      2017-11-26 12:30:27  -2.58
 5      2017-11-26 12:45:01  -2.59
是否有一种快速方法可用于从数据框中的列中选择最接近凌晨12点或任何其他选定时间的每日值?

direction='nearest'
参数和具有所需日期时间的辅助数据框一起使用:

df['Time'] = pd.to_datetime(df['Time'])

df1 = (df.assign(Time1 = df['Time'].dt.normalize() + pd.Timedelta(12, unit='H'))[['Time1']]
         .drop_duplicates())
print (df1)
                Time1
0 2017-11-26 12:00:00

df = pd.merge_asof(df1, df, left_on='Time1', right_on='Time', direction='nearest')
print (df)
                Time1                Time   B33
0 2017-11-26 12:00:00 2017-11-26 12:00:02 -2.58

很好的解决方案!我正在将12:00转换为秒,并通过diff.找到最接近的秒。。