У меня есть датафрейм с разными столбцами, такими как:
1) мобильный телефон cust no
2) домашний телефон cust
3) следующий телефон cust
4) факс cust
5) cust id
В моем выходном фрейме данных мне бы хотелось иметь такие столбцы, как:
1) cust id
2) cust phone 1
3) cust phone 2
4) cust phone 3
5) cust phone 4
Отображение между входными и выходными телефонными номерами выглядит следующим образом (но также имеется приоритетная логика c):
cust phone 1 = cust mobile phone no
cust phone 2 = cust home phone
cust phone 3 = cust nextkin phone
cust phone 4 = cust fax
Обратите внимание, что любой из них может быть пустым во входном фрейме данных. Приоритет логики c говорит о том, что если один из них пуст, то этому столбцу телефона должен быть присвоен следующий доступный номер телефона. Таким образом, если обычный телефон 2 пуст, но обычный телефон 3 доступен, то для мобильного телефона 2 должно быть назначено значение и так далее. Кроме того, все телефонные звонки от 1 до 4 должны быть уникальными (без дубликатов).
Поскольку кадр данных большой, перебор строк не возможен.
Вот пример фрейма данных :
df = pd.DataFrame({'cust mobile no': ['1', '2', '3'],
'cust home phone': [np.nan, '2', 'x'],
'cust nextkin phone': ['1', '2', 'g'],
'cust fax': [np.nan, '4', '5'],
'cust id': ['001', '002', '003']})
cust mobile no cust home phone cust nextkin phone cust fax cust id
0 1 NaN 1 NaN 001
1 2 2 2 4 002
2 3 x g 5 003
Ожидаемый результат:
cust id cust phone 1 cust phone 2 cust phone 3 cust phone 4
0 001 1 NaN NaN NaN
1 002 2 4 NaN NaN
2 003 3 x g 5