Python Pandas:将不同间隔的刻度与每小时数据进行比较



我在一个pandas数据框架中有一个月的不同间隔的刻度,如下所示

Spread
Date                           
2021-02-01 00:01:10.718     9.0
2021-02-01 00:01:14.471     9.2
2021-02-01 00:01:24.794     5.5
2021-02-01 00:01:30.738     4.6
2021-02-01 00:01:30.938     3.5

我也有一个小时阈值如下

Upper
Date                         
2021-02-01 00:00:00  4.709884
2021-02-01 01:00:00  1.356615
2021-02-01 02:00:00  0.667457
2021-02-01 03:00:00  0.628824
2021-02-01 04:00:00  0.642154

我的目标是比较并找到给定小时内高于阈值的所有刻度。例如,我想比较20121-02-01 00:00:00之间的所有刻度和00:59:59的阈值2019-02-01 00:00:00从第二个数据帧开始,依此类推。

我已经尝试使用groupby()将刻度分组到(日期,小时),但是我不知道如何自动地在整个月的数据中找到高于相应阈值的值。

任何帮助都将是非常感激的。

pd.merge_asof是你的朋友:

s = pd.merge_asof(df, hourly, on='Date')
# for references
df['Upper'] = s['Upper'].values
# we need to pass value because `merge_asof` reset the index
df['matched'] = (s['Spread'] <= s['Upper']).values

输出:

Spread     Upper  matched
Date                                              
2021-02-01 00:01:10.718     9.0  4.709884    False
2021-02-01 00:01:14.471     9.2  4.709884    False
2021-02-01 00:01:24.794     5.5  4.709884    False
2021-02-01 00:01:30.738     4.6  4.709884     True
2021-02-01 00:01:30.938     3.5  4.709884     True

注意:如果您有不同的刻度,您可以将by='tick'传递给merge_asof

最新更新