如果任一变量包含字符,则进行筛选

2024-05-14 19:07:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含4个变量的数据集,如下所示:

ID    DX1    DX2            DX3
1   Cold     Covid         Sickle
2   Rash     Burn
3   Resp     Sore throat

我想写一个代码,在一个数据帧中只包含某些诊断的特定患者。例如,我只希望在DX1、DX2或DX3中具有以下任一诊断(感冒和/或resp)的患者作为其DX。例如,输出与上述相同,但没有患者2

我知道我可以执行下面的contains语句,但如何更改代码,使搜索变量为DX1 DX2和DX3,而不仅仅是DX1。我也知道我可以将每个DX变量连接成一个变量,但我很好奇是否有更干净的方法来编码

DF_v1 = DF[DF.DX1.str.contains("cold|resp", na=False, case=False)]

Tags: 数据代码患者idfalsedfrespcontains
1条回答
网友
1楼 · 发布于 2024-05-14 19:07:52

filter选择“DX”列,因为作用于系列的.str操作分别应用于每个系列。然后检查any列是否满足该行形成用于切片原始数据帧的布尔掩码的条件

m = (df.filter(like='DX')
       .apply(lambda col: col.str.contains("cold|resp", na=False, case=False))
       .any(axis=1))

df[m]
#   ID   DX1          DX2     DX3
#0   1  Cold        Covid  Sickle
#2   3  Resp  Sore throat        

相关问题 更多 >

    热门问题