我有两个数据帧. DF1:
Date High Mid Low
1 2023-08-03 00:00:00 29249.8 29136.6 29152.3
4 2023-08-03 12:00:00 29395.8 29228.1 29105.0
10 2023-08-04 12:00:00 29305.2 29250.1 29137.1
13 2023-08-05 00:00:00 29099.9 29045.3 29073.0
18 2023-08-05 20:00:00 29061.6 29047.1 29044.0
.. ... ... ... ...
696 2023-11-26 20:00:00 37732.1 37469.9 37370.0
703 2023-11-28 00:00:00 37341.4 37138.2 37254.1
707 2023-11-28 16:00:00 38390.7 38137.2 37534.4
711 2023-11-29 08:00:00 38419.0 38136.3 38112.0
716 2023-11-30 04:00:00 38148.9 37800.1 38040.0
和df2:
Start Top Bottom
0 2023-11-28 00:00:00 37341.4 37138.2
1 2023-11-24 12:00:00 38432.9 37894.4
我需要判断第一个数据帧中的值是否落在第二个数据帧的一行中的值的范围内,并将匹配的数量存储在一列中.我可以像这样使用迭代来完成:
for idx in df1.index:
df2.loc[
(df2.Start != df1.at[idx, 'Date']) &
(df2.Bottom < df1.at[idx, 'High']) &
(df2.Top > df1.loc[idx, ['Mid', 'Low']].max()),
'Match'] += 1
但这条路走得很慢.有没有一种更快的方法来做到这一点而无需迭代?