我有一个困惑,与其他问题类似,但有一个小转折。
我有一个数据框-见下文。每个记录都是唯一的,并且某些记录在该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)
使用,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] 删除。
我来说两句