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