У меня есть Pandas 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]
})
print(df)
| name | postal_code | previous_name1 | previous_name2 | previous_name3 |
|--------|-------------|----------------|----------------|----------------|
| Nitron | 1410 | Rotory | NaN | Datec |
| Pulset | 1020 | NaN | Cmotor | NaN |
| Rotaxi | 1310 | Cyclip | NaN | NaN |
Как вы заметите, компания может иметь до трех предыдущих названий.
Моя цель состоит в том, чтобы «денормализовать» вышеприведенную таблицу, чтобы новый DataFrame имел следующую форму:
| name | postal_code |
|--------|-------------|
| Nitron | 1410 |
| Rotory | 1410 |
| Datec | 1410 |
| Pulset | 1020 |
| Cmotor | 1020 |
| Rotaxi | 1310 |
| Cyclip | 1310 |
То есть я хочу добавить новую строку для всех случаев, когда предыдущие названия компаний не пропущены, и впоследствии удалить предыдущие серии имен (я также хочу добавить значение postal_code
для каждой новой строки).
Я ищу описание метода (желательно с кодом или псевдокодом), который позволит мне достичь вышеуказанного результата.