在循环行的同时获取列的总和

问题描述 投票:0回答:1
病人 到达日期时间 出发日期时间 部门总计
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 到达时间时部门内有多少人,这循环将继续通过每个患者。

python loops func
1个回答
0
投票

在这里,您可以使用数据框来存储数据并循环遍历它以检查满足给定条件的患者数量,这就是您可以执行此操作的方法 ->

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)

您可以使用其他数据结构并可以明智地解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.