pandas 按条件查找最近日期

hkmswyz6  于 2022-11-20  发布在  其他
关注(0)|答案(1)|浏览(252)

有两个Pandas表,每个包含两列。在第一个时间,也有一个心律。第二个时间是收缩压。
编写用于创建第三个表的代码,在该表中,对于每次血压测量,如果必须在血压测量之前且不早于15分钟之前进行心率测量,则同一行包含最近的心率测量的时间和值
我试着用truncate和iloc来解决它,但是我没有成功。

import pandas as pd
df_hr = pd.DataFrame({'time': 
    [datetime.datetime(2022,1,1,7,40), 
     datetime.datetime(2022,1,1,9,50), 
     datetime.datetime(2022,1,1,10,1)],
    'hr':
    [60, 90, 100]}).set_index('time')

df_bp = pd.DataFrame({'time': 
    [datetime.datetime(2022,1,1,10),
     datetime.datetime(2022,1,1,8)],
    'bp': [140, 120]}).set_index('time')
xmakbtuz

xmakbtuz1#

让我们用direction='backward'来做merge_asof,用15min来做tolerance

pd.merge_asof(
    df_bp.sort_index(), 
    df_hr.sort_index(), 
    on='time', 
    direction='backward',
    tolerance=pd.Timedelta('15min'), 
)

**注意:**保留字参数direction=backward会选取右边DataFrame中最后一列,其'on'索引键小于或相等左边的索引键

测试结果

time   bp    hr
0 2022-01-01 08:00:00  120   NaN
1 2022-01-01 10:00:00  140  90.0

相关问题