Я хочу применить свою пользовательскую функцию (она использует лестницу if-else) к этим шести столбцам (ERI_Hispanic, ERI_AmerInd_AKNatv, ERI_Asian, ERI_Black_Afr.Amer, ERI_HI_PacIsl, ERI_White) в каждой строке моего dataframe.
Я пробовал разные методы из других вопросов, но все еще не могу найти правильный ответ для моей проблемы. Критическим моментом является то, что если человек считается латиноамериканцем, его нельзя считать ничем другим. Даже если у них есть "1" в другой колонке этнической принадлежности, они все равно считаются латиноамериканцами, а не двумя или более расами. Аналогичным образом, если сумма всех столбцов ERI больше 1, они считаются двумя или более расами и не могут считаться уникальной этнической принадлежностью (кроме испаноязычных). Надеюсь, это имеет смысл. Любая помощь будет оценена.
Это почти как цикл for для каждой строки, и если каждая запись соответствует критерию, они добавляются в один список и удаляются из оригинала.
Из приведенного ниже кадра данных мне нужно вычислить новый столбец на основе следующей спецификации в SQL:
========================= КРИТЕРИИ ======================== =======
IF [ERI_Hispanic] = 1 THEN RETURN 'Hispanic'
ELSE IF SUM([ERI_AmerInd_AKNatv] + [ERI_Asian] + [ERI_Black_Afr.Amer] + [ERI_HI_PacIsl] + [ERI_White]) > 1 THEN RETURN 'Two or More'
ELSE IF [ERI_AmerInd_AKNatv] = 1 THEN RETURN 'A/I AK Native'
ELSE IF [ERI_Asian] = 1 THEN RETURN 'Asian'
ELSE IF [ERI_Black_Afr.Amer] = 1 THEN RETURN 'Black/AA'
ELSE IF [ERI_HI_PacIsl] = 1 THEN RETURN 'Haw/Pac Isl.'
ELSE IF [ERI_White] = 1 THEN RETURN 'White'
Комментарий: если флаг ERI для испаноязычных имеет значение "Истина" (1), сотрудник классифицируется как "испаноязычный"
Комментарий: если установлено более 1 флага неиспаноязычного ERI, вернуть "Два или более"
====================== DATAFRAME ===========================
     lname          fname       rno_cd  eri_afr_amer    eri_asian   eri_hawaiian    eri_hispanic    eri_nat_amer    eri_white   rno_defined
0    MOST           JEFF        E       0               0           0               0               0               1           White
1    CRUISE         TOM         E       0               0           0               1               0               0           White
2    DEPP           JOHNNY              0               0           0               0               0               1           Unknown
3    DICAP          LEO                 0               0           0               0               0               1           Unknown
4    BRANDO         MARLON      E       0               0           0               0               0               0           White
5    HANKS          TOM         0                       0           0               0               0               1           Unknown
6    DENIRO         ROBERT      E       0               1           0               0               0               1           White
7    PACINO         AL          E       0               0           0               0               0               1           White
8    WILLIAMS       ROBIN       E       0               0           1               0               0               0           White
9    EASTWOOD       CLINT       E       0               0           0               0               0               1           White