我有一个包含患者就诊级别数据的数据框(每一行都是一个独特的个人的医院就诊)。有一列 for admit_timestamp
,另一列 for discharge_timestamp
。我需要为一天中的每个小时(0-23)计算几个指标(例如,每小时的患者总数)。最终结果将是一个 (24 x C
) 矩阵,其中每一行是一个小时,并且C
取决于我最终计算的聚合指标。请注意,这与这个问题不同,因为我不能简单地使用pd.resample
在一列上---我必须考虑患者在医院的整个时间跨度,可能超过 1 天。我正在尝试找到一个有效的实现,因为它是每隔几周(批量)在几 GB 的数据上发生的操作。我希望这个社区可以为我指明正确的方向。考虑以下可重现的示例:
比如说,我们有 3 名患者,入院/出院时间戳如下:
df = pd.DataFrame({
'patient_id':[1,2,3],
'admit_timestamp':['2021-01-01 00:00:00', '2021-01-01 00:00:00', '2021-01-01 22:00:00'],
'discharge_timestamp':['2021-01-01 02:00:00', '2021-01-02 00:00:00', '2021-01-01 23:30:00']
})
df.admit_timestamp = pd.to_datetime(df.admit_timestamp)
df.discharge_timestamp = pd.to_datetime(df.discharge_timestamp)
如果我想简单地计算每小时的患者总数(我需要的最简单的指标),我会期望这样的表格:
Hour | Count
0 2
1 2
2 1
. .
. .
. .
23 1.5
我开始尝试组合pd.interval_range
创建相关时间列表,并pd.explode
融合数据,以便每一行代表一个独特的患者时间,但不确定这是否是最佳方法。