У меня есть следующий фрейм данных df_address, содержащий адреса студентов
student_id address_type Address City
1 R 6th street MPLS
1 P 10th street SE Chicago
1 E 10th street SE Chicago
2 P Washington ST Boston
2 E Essex St NYC
3 E 1040 Taft Blvd Dallas
4 R 24th street NYC
4 P 8th street SE Chicago
5 T 10 Riverside Ave Boston
6 20th St NYC
У каждого студента может быть несколько типов адресов:
R обозначает "Жилой", P обозначает "Постоянный", Eдля «Emergency», T для «Temporary» и addr_type также могут быть пустыми
Я хочу заполнить столбцы «IsPrimaryAddress» на основе следующей логики:
Если для конкретного студента существует address_type Rтогда «Да» должно быть написано перед типом адреса «R» в столбце IsPrimaryAddress, а «Нет» должно быть записано перед другими типами адреса для этого конкретного student_id.
, если address_type R не существует, ноP существует тогда IsPrimaryAddress = 'Да' для 'P' и 'Нет' для остальных типов
, если ни P, ни R не существует, но E существует, тогда IsPrimaryAddress = 'Yes' для 'E', если P,R или E не существует, но 'T' существует, тогда IsPrimaryAddress = 'Yes' для 'T' Результирующий фрейм данных будет выглядеть следующим образом:
student_id address_type Address City IsPrimaryAddress
1 R 6th street MPLS Yes
1 P 10th street SE Chicago No
1 E 10th street SE Chicago No
2 P Washington ST Boston Yes
2 E Essex St NYC No
3 E 1040 Taft Blvd Dallas Yes
4 R 24th street NYC Yes
4 P 8th street SE Chicago No
5 T 10 Riverside Ave Boston Yes
6 20th St NYC Yes
Как мне этого добиться? Я пробовал rank и cumcountFUNCна address_type, но не может заставить их работать.