Панды переставляют плоскую иерархию снизу вверх - PullRequest
0 голосов
/ 09 октября 2019

Я застрял с проблемой изменить аранжировку плоской несбалансированной иерархии, которая строится снизу вверх, т.е. сопоставить дочерний элемент с родителем, родительским родителем и т. Д. С нисходящей структурой, то есть начинать с корня и заполнятьструктура вниз. Поскольку дерево не сбалансировано, некоторые заканчиваются на более низком уровне иерархии, чем другие.

Пример:

Источник:

Child|Parent+0|Parent+1|Parent+2|Parent+3|Parent+4
Julia|Peter|Alice|Paul|Sara|Bianca  
Chris|Jen|Bob|Fred|Bianca|NaN  
Ben|John|Bianca|NaN|NaN  

Цель:

Parent-0|Parent-1|Parent-2|Parent-3|Parent-4|Child  
Bianca|Sara|Paul|Alice|Peter|Julia  
Bianca|Fred|Bob|Jen|NaN|Chris  
Bianca|John|NaN|NaN|NaN|Ben  

Я пробовал разные идеи, но пока не повезло. Ценю вашу помощь или идеи.

1 Ответ

0 голосов
/ 09 октября 2019

set_index и переверните значения. Затем воспользуйтесь функцией justify, которую cs95 модифицировал из Divakar.

df = df.set_index('Child').loc[:, ::-1]

pd.DataFrame(justify(df.to_numpy(), invalid_val=np.NaN), 
             index=df.index, 
             columns=[f'Parent-{i}' for i in range(0, df.shape[1])])

      Parent-0 Parent-1 Parent-2 Parent-3 Parent-4
Child                                             
Julia   Bianca     Sara     Paul    Alice    Peter
Chris   Bianca     Fred      Bob      Jen      NaN
Ben     Bianca     John      NaN      NaN      NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...