python - Python 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
我的目标是比较并找到在给定小时内高于阈值的所有刻度。例如,我想将2021-02-01 00:00:00和00:59:59之间的所有刻度与第二个数据帧中 2021-02-01 00:00:00的阈值进行比较,依此类推,持续时间为这个月。
我尝试使用groupby()
将刻度分组为(date, hour),但我不知道如何自动执行为整个月的数据查找高于相应阈值的值的过程。
任何帮助将不胜感激。
解决方案
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
.
推荐阅读
- php - 使用表单显示某个值大于 X 的所有记录
- delphi - 这是 Rio 上 System.Net.HttpClient 中的错误吗?
- mysql - 如何在 bash 脚本中自动设置 mysql 密码?
- tensorflow2.0 - 如何在 Tensorflow 2.0 中创建 serving_input_fn 用于图像预处理?
- c++ - 复制或 constref 一个 shared_ptr?
- java - 创建时 Apache PDFMergerUtility NoClassDefFoundError
- javascript - 如何将 HTML 链接定向到 R Shiny 中的侧边栏项目
- sql - 从时间序列中的非单调变化中提取值
- php - 这两个查询中的语法错误在哪里一起使用
- python - 检查输入时出错:预期 conv2d_1_input 有 4 个维度,但得到了形状为 (16, 1) 的数组