Это продолжение моего предыдущего поста о денормализации DataFrame названий компаний.
Пересмотренная таблица, с которой я сейчас работаю, выглядит следующим образом:
import numpy as np
import pandas as pd
df = pd.DataFrame({'name' : ['Nitron', 'Pulset', 'Rotaxi'],
'postal_code' : [1410, 1020, 1310],
'previous_name1' : ['Rotory', np.NaN, 'Datec'],
'previous_name2' : [ np.NaN, 'Cmotor', np.NaN],
'previous_name3' : ['Datec', np.NaN, np.NaN],
'country' : ['BEL', 'ENG', 'JPN'],
'city' : ['Brussels', np.NaN, np.NaN]
})
print(df)
| name | postal_code | previous_name1 | previous_name2 | previous_name3 | country | city |
|--------|-------------|----------------|----------------|----------------|---------|----------|
| Nitron | 1410 | Rotory | NaN | Datec | BEL | Brussels |
| Pulset | 1020 | NaN | Cmotor | NaN | ENG | NaN |
| Rotaxi | 1310 | Cyclip | NaN | NaN | JPN | NaN |
По сравнению с моим предыдущим постом вышеупомянутый DataFrame теперь имеет два дополнительных столбца, а именно серии country
и city
.
Моя цель остается прежней: добавить новую строку для всех случаев, когда предыдущие названия компаний не пропущены с колонками country
и city
, а затем удалить предыдущие имена Series. Визуально «денормализованная» версия должна выглядеть так:
| name | postal_code | country | city |
|--------|-------------|---------|----------|
| Nitron | 1410 | BEL | Brussels |
| Rotory | 1410 | BEL | Brussels |
| Datec | 1410 | BEL | Brussels |
| Pulset | 1020 | ENG | NaN |
| Cmotor | 1020 | ENG | NaN |
| Rotaxi | 1310 | JPN | NaN |
| Cyclip | 1310 | JPN | NaN |
Потратив некоторое время на понимание кода , предоставленного jezrael для моего предыдущего вопроса, я безуспешно пытался изменить / настроить решение этой новой проблемы. Поскольку я довольно плохо знаком с экосистемой Python / Pandas, любая дополнительная помощь будет принята с благодарностью.