【发布时间】:2023-02-08 00:14:16
【问题描述】:
我正在尝试获取患者数据的数据框并创建一个新的 df,如果他们在同一日期遇到了三个服务,则包含他们的姓名和日期。
首先我有一个数据框
import pandas as pd
df = pd.DataFrame({'name': ['Bob', 'Charlie', 'Bob', 'Sam', 'Bob', 'Sam', 'Chris'],
'date': ['06-02-2023', '01-02-2023', '06-02-2023', '20-12-2022', '06-02-2023','08-06-2015', '26-08-2020'],
'department': ['urology', 'urology', 'oncology', 'primary care', 'radiation', 'primary care', 'oncology']})
我尝试使用 agg 函数对名称和日期进行分组以创建列表
df_group = df.groupby(['name', 'date']).agg({'department': pd.Series.unique})
对于鲍勃来说,这个创建的部门包含 [泌尿科、肿瘤科、放射科]。
现在,当我尝试在列表中搜索部门,然后只查找包含相关部门的行时,出现错误。
df_group.loc[df_group['department'].str.contains('primary care')]
例如导致 KeyError: '[nan nan nan nan nan] not in index'
我认为有一种更简单的方法,但最终,我只想获得一个人的数据框,其中包含他们遇到泌尿科、肿瘤科和放射科的日期。在上面的 df 中,它会导致:
名称日期 鲍勃 06-02-2023
【问题讨论】: