我有一个数据集如下,有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