IsIn для фрейма данных python

#python #pandas

Вопрос:

3 столбца моего фрейма данных связаны с медицинскими специальностями, я пытаюсь проверить, находится ли столбец 1 в столбце 2, это правда… если столбец 2 в столбце 3, это правда. так что это выражение было бы верным. Я также учитываю наличие нулей, и если все совпадает. Замена Или между первой строкой на и amp; либо дает много ложных срабатываний, либо кажется, что это ничего не делает. 2-я и 4-я строки также должны быть правильными.

Фрейм данных https://i.stack.imgur.com/IqqaZ.png как это выглядит после выполнения форматирования.

 dfMaster = pd.dataframe({'Specialty_M' : ['Telemetry', 'M/S; Clinic; ER', 'Healthcare', 'M/S; Telemetry', 'ICU', 'Clinic', 'ICU'], 'Specialty_AM': ['ICU', 'ER', 'HLTH', 'M/S', 'ICU', 'PEDS', 'ICU'], 'Specialty_BE' : ['ICU', 'ER', '','M/S', 'ICU', '', 'ICU']}) dfMaster['SPECIALTY Okay?'] = np.NaN  
 comparisonSpecialty999 = np.where(  (dfMaster['Specialty_BE'].isin(dfMaster['Specialty_AM']) amp; dfMaster['Specialty_AM'].isin(dfMaster['Specialty_M'])) |  ((dfMaster['Specialty_M'].str.upper() == dfMaster['Specialty_BE'].str.upper()) amp;  (dfMaster['Specialty_M'].str.upper() == dfMaster['Specialty_AM'].str.upper())) |  (  (dfMaster['Specialty_M'] != dfMaster['Specialty_M']) amp;  (dfMaster['Specialty_AM'] != dfMaster['Specialty_AM']) amp;  (dfMaster['Specialty_BE'] != dfMaster['Specialty_BE']))  | ~Exists, 'Correct', 'Fix')  dfMaster['SPECIALTY Okay?'] = comparisonSpecialty999  

Ответ №1:

Попробуйте с apply и in :

 dfMaster['SPECIALTY Okay?'] = (np.where(dfMaster.apply(lambda x: (x["Specialty_BE"] in x["Specialty_AM"]) and   (x["Specialty_AM"] in x["Specialty_M"]),   axis=1),   "Correct",   "Fix")  )  gt;gt;gt; dfMaster  Specialty_M Specialty_AM Specialty_BE SPECIALTY Okay? 0 Telemetry ICU ICU Fix 1 M/S; Clinic; ER ER ER Correct 2 Healthcare HLTH Fix 3 M/S; Telemetry M/S M/S Correct 4 ICU ICU ICU Correct 5 Clinic PEDS Fix 6 ICU ICU ICU Correct  

Комментарии:

1. Спасибо! Это то, что мне было нужно!