#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. Спасибо! Это то, что мне было нужно!