我尝试获取患者数据的 Dataframe ,并创建一个新的df,其中包括他们的姓名和日期,如果他们在同一天遇到三个服务。
首先我有一个 Dataframe
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函数对名称和日期进行group by以创建列表
df_group = df.groupby(['name', 'date']).agg({'department': pd.Series.unique})
对于bob来说,这个部门包括泌尿科、肿瘤科、放射科。
现在,当我试图搜索列表中的部门,然后只找到包含有问题的部门的行时,我得到了一个错误。
df_group.loc[df_group['department'].str.contains('primary care')]
例如,导致KeyError:'[nan nan nan nan]不在索引中'
我假设有一个更简单的方法,但最终,我只想得到一个 Dataframe 的人与日期时,他们有一个遇到泌尿科,肿瘤科和放射科。在上述df将导致:
姓名日期Bob 2023年2月6日
1条答案
按热度按时间goucqfw61#
轻松解决
结果