gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 10:53:09 25 4
gpt4 key购买 nike

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

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

pd.between_time 不会解决这个问题,因为在某些情况下,直接在 12am 之前和之后会有一个测量。我想选择最接近上午 12 点(上午 12 点之前或之后)的值。

由于数据集的大小,性能需要很快。有一些方法可以用 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 点或任何其他选定时间的数据框中的列中选择每日值?

最佳答案

使用 merge_asof direction='nearest'参数和助手 DataFrame 与您需要的日期时间:

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

关于用于在最接近所选时间的每日值的数据框中选择的 Python 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59369862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com