У меня есть пандас DataFrame с уникальными строками, который выглядит примерно так:
df = pd.DataFrame({'O': ['O-1','O-1'],
'B': ['B-1','B-2'],
'C': ['C-1','C-2'],
'R': ['R-1','R-1']},
columns = ['O', 'B', 'C', 'R'])
Столбцы df
упорядочены в линейном отношении родитель-потомок, где столбец O
- это уровень 1, столбецB
это уровень 2 и так далее.Намерение состоит в том, чтобы преобразовать эту df
в древовидную структуру для целей навигации, которая будет выглядеть примерно так:
output = pd.DataFrame({'PARENT': ['O-1','O-1','O-1','O-1','O-1','B-1','B-1','B-2','B-2','C-1','C-2'],
'CHILD_TYPE': ['B','B','C','C','R','C','R','C','R','R','R'],
'CHILD': ['B-1','B-2','C-1','C-2','R-1','C-1','R-1','C-2','R-1','R-1','R-1']},
columns = ['PARENT', 'CHILD_TYPE', 'CHILD'])
Фильтрация по каждому значению каждого столбца в df
(как родительский элемент), а затем копированиевсе уникальные значения оставшихся столбцов справа от дочернего элемента кажутся плохим способом достижения этого.
Есть ли эффективный способ?