IF ELSE条件熊猫

掠夺

我有一个困惑,与其他问题类似,但有一个小转折。

我有一个数据框-见下文。每个记录都是唯一的,并且某些记录在该Concat列中具有多个允许位置CONCAT列反映的接诊位置状态的进展。

我想知道病人在哪里结束。

我知道,如果该CONCAT列中的文本是“ 3E PICU”或“ 6EN”或“ 3MN”或“ 6E”或“ 3MC”,无论该列中是否有其他文本,它们都将以ICU结尾。

我知道,如果患者在CONCAT色谱柱上具有以下任何接纳位置,而没有任何ICU位置,则可以将它们视为“急性”:'4E'或'5E NSU'或'3E HKU'(有关完整信息,请参见下面的代码)位置列表)。

我知道,如果患者在CONCAT中没有任何其他位置的情况下都拥有APU,CPU或PSU ,则可以将其视为“心理”。

我知道,如果不将患者视为ICU,ACUTE或PSYCH,则不会将其收治。

当前数据

 ID              Concat 
  1              MAIN, 3E HKU, 6EN 
  2              ED Eval and Treatment Unit
  3              ED Main, 3E PICU
  4              ED Main, APU

所需数据

 ID              Concat                              Admit Status 
  1              MAIN, 3E HKU, 6EN                       ICU
  2              ED Eval and Treatment Unit            Non-Admit
  3              ED Main, PICU                           ICU
  4              ED Main, APU                           Psych
  5              ED Main, 5E NSU, 3E HKU                Acute

我对str.contains代码很熟悉,但是在不合理地映射代码时需要一些帮助,尤其是在需要其他条件的情况下。

 condition_one=new_ADM1["concat"].str.contains("3E PICU|6EN|3MN|6E|3MC", case=False)
 condition_two=new_ADM1["concat"].str.contains("4E|5E NSU|3E HKU|3E|4MN|5E SCU|4MA|7E|7E IRU", case=False)
 condition_three=new_ADM1["concat"].str.contains("APU|CPU|PSU", case=False)
Shubham Sharma

使用,Series.str.contains连同给定的regex模式,然后使用np.select来根据条件从选项中选择项目m1, m2 & m3

m1 = df["Concat"].str.contains("(?i)(?:3E PICU|6EN|3MN|6E|3MC)$")
m2 = df["Concat"].str.contains("(?i)(?:4E|5E NSU|3E HKU|3E|4MN|5E SCU|4MA|7E|7E IRU)$")
m3 = df["Concat"].str.contains("(?i)(?:APU|CPU|PSU)$")

df['Admit Status'] = np.select([m1, m2, m3], ['ICU', 'Acute', 'Psych'], 'Non-Admit')

结果:

# print(df)
   ID                      Concat Admit Status
0   1           MAIN, 3E HKU, 6EN          ICU
1   2  ED Eval and Treatment Unit    Non-Admit
2   3            ED Main, 3E PICU          ICU
3   4                ED Main, APU        Psych

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章