Самый простой способ - заменить всю строку ключевым словом:
df['Conditions'].str.replace('.*(Lymphoma|Cancer).*', '\\1', case=False)
Но это решение довольно неточно. Это не работает, если есть определенные типы лимфомы, которые на самом деле следует рассматривать как рак, или состояния лимфомы, которые не содержат ключевое слово «лимфома».
Более точный подход заключается в явном перечислениивсе состояния, которые считаются лимфомой и раком и заменяют их соответственно:
replacements = {
'Lymphoma': ['Lymphoma', 'Follicular Lymphoma', 'Lymphoma, B-Cell', 'B-Cell Lymphoma', 'XYZ'],
'Cancer': ['Cancer A', 'Cancer B']
}
# explode requires pandas 0.25 or later
s = pd.Series(replacements).explode()
m = pd.Series(s.index, index=s.str.upper()).to_dict()
df['Conditions'].str.upper().map(m)
Вызовы upper
предназначены для работы с регистром символов.