检查一组数据帧列中是否存在列表中的任何值,并创建新的布尔列



我有一个数据框架,其中每行代表一名患者,几列列出医疗诊断。下面给出了一个简化版本。有些患者的诊断栏是空的,这取决于他们记录了多少诊断。

data = {'id': [1, 2, 3, 4], 'diag_1': ['stroke', 'stroke', 'cancer', 'heart disease'], 'diag_2': ['dementia', 'heart disease', 'copd', 'hypertension'], 'diag_3': ['hypertension', '', '', '']}
df = pd.DataFrame(data=data)

我有一份诊断清单,这是研究的纳入标准:

diagnoses = ['stroke', 'heart disease']

我想在数据帧中添加一个具有True/False(或0/1(的列,该列反映患者是否在任何诊断数据帧列的诊断列表中至少有一个诊断。

您可以使用

df['flag'] = df.filter(like='diag').isin(diagnoses).any(axis=1)
print(df)
id         diag_1         diag_2        diag_3   flag
0   1         stroke       dementia  hypertension   True
1   2         stroke  heart disease                 True
2   3         cancer           copd                False
3   4  heart disease   hypertension                 True

相关内容

最新更新