病人 | 到达日期时间 | 出发日期时间 | 部门总计 |
---|---|---|---|
1 | 2024年9月4日23:00 | 2024年4月10日11:00 | |
2 | 10/04/2024 07:42 | 10/04/2024 09:57 | |
3 | 10/04/2024 09:15 | 2024年4月10日13:00 | |
4 | 10/04/2024 08:56 | 10/04/2024 10:15 | |
5 | 10/04/2024 05:00 | 10/04/2024 08:30 | |
6 | 10/04/2024 06:15 | 2024年4月10日14:20 | |
7 | 10/04/2024 01:29 | 10/04/2024 10:32 | |
8 | 10/04/2024 08:22 | 2024年4月10日15:15 |
我完全迷失了。我想我可以创建一个循环 if/elif 函数来遍历每一行并检查到达日期时间是否 <= patient1's arrival datetime and the depart datetime was >= 患者 1 的到达日期时间,然后该列将给出患者 1 到达时间时部门内有多少人,这循环将继续通过每个患者。
在这里,您可以使用数据框来存储数据并循环遍历它以检查满足给定条件的患者数量,这就是您可以执行此操作的方法 ->
import pandas as pd
data = {
"Patient": [1, 2, 3, 4, 5, 6, 7, 8],
"arrival datetime": ['09/04/2024 23:00', '10/04/2024 07:42', '10/04/2024
09:15', '10/04/2024 08:56', '10/04/2024 05:00', '10/04/2024 06:15',
'10/04/2024 01:29', '10/04/2024 08:22'],
"depart datetime": ['10/04/2024 11:00', '10/04/2024 09:57', '10/04/2024
13:00', '10/04/2024 10:15', '10/04/2024 08:30', '10/04/2024 14:20',
'10/04/2024 10:32', '10/04/2024 15:15']
}
df = pd.DataFrame(data)
df['Total in department'] = 0
df['arrival datetime'] = pd.to_datetime(df['arrival datetime'])
df['depart datetime'] = pd.to_datetime(df['depart datetime'])
for i in range(df.shape[0]):
c = 0
for j in range(df.shape[0]):
if i != j and (df.loc[j, 'arrival datetime'] <= df.loc[i, 'arrival
datetime'] and df.loc[j, 'depart datetime'] >= df.loc[i, 'depart
datetime']):
c += 1
df.loc[i, 'Total in department'] = c
print(df)
您可以使用其他数据结构并可以明智地解决问题。