如果其中一个变量包含字符,则过滤



我有一个数据集如下,有4个变量:

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

我想写一段代码,在数据框中只包含具有特定诊断的特定患者。例如,我只希望在DX1、DX2或DX3中有以下诊断之一(感冒和/或发烧)的患者作为他们的DX。例如,输出将与上面相同,但没有患者2。

我知道我可以在下面做一个包含语句,但我怎么能改变我的代码,所以搜索变量是DX1 DX2和DX3,而不仅仅是DX1。我也知道我可以将每个DX变量连接到一个变量中,但我很好奇是否有更清晰的方法来编写此代码。

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

filter选择'DX'列,因为.str操作作用于系列,分别应用于每个系列。然后检查any列是否满足您的条件,以形成用于切片原始DataFrame的布尔掩码。

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        

相关内容

  • 没有找到相关文章

最新更新