【发布时间】:2022-01-09 12:30:19
【问题描述】:
我有以下pd.DataFrame
df = pd.DataFrame({'admission_timestamp': ['2021-01-17 17:45:00', '2020-03-31 23:32:00', '2020-03-27 18:20:00', '2020-04-17 18:12:00', '2020-03-19 19:12:00'], 'end_period': ['2021-01-18 17:45:00', '2020-04-01 23:32:00', '2020-03-28 18:20:00', '2020-04-18 18:12:00', '2020-03-20 19:12:00'], 'start_med': ['NaT', '2020-04-01 00:00:00', '2020-03-27 19:00:00', '2020-04-17 18:39:24', 'NaT'], 'end_med': ['NaT', '2020-04-14 21:00:00', '2020-04-05 00:00:00', '2020-05-06 22:07:29', 'NaT']})
看起来像:
admission_timestamp end_period start_med end_med
1 2021-01-17 17:45:00 2021-01-18 17:45:00 NaT NaT
2 2020-03-31 23:32:00 2020-04-01 23:32:00 2020-04-01 00:00:00 2020-04-14 21:00:00
3 2020-03-27 18:20:00 2020-03-28 18:20:00 2020-03-27 19:00:00 2020-04-05 00:00:00
4 2020-04-17 18:12:00 2020-04-18 18:12:00 2020-04-17 18:39:24 2020-05-06 22:07:29
5 2020-03-19 19:12:00 2020-03-20 19:12:00 NaT NaT
我想创建一个新列 received_medidation 来说明患者是否(布尔)在 admission_timestamp 和 end_period 之间接受了药物治疗(即使只有一秒钟)。因此,布尔值应该说明admission_timestamp 和end_period 之间是否有任何时间与start_med 和end_med 之间的时间重叠。 dtypes 都是 datetime64[ns]。
我知道我们可以创建布尔掩码,例如
condition = (df['date'] > start_date) & (df['date'] <= end_date)
...但是我不明白这如何可能解决上述任务。任何帮助表示赞赏。
【问题讨论】:
-
您要逐行比较?
-
@Corralien 我想创建一个新列,说明在此期间是否收到了药物。
标签: python pandas dataframe datetime