записать значение всех столбцов для ID в одном столбце на уровень ниже с посощью Pandas

Здраствуйте,нужно записать значение всех столбцов для ID в одном столбце на уровень ниже,вот пример данных

введите сюда описание изображения

Нужно получить примерно такой результат:

введите сюда описание изображения вот пример данных:

data = {'Parent Meta`s ID' : ['3516', '3518', '3517', '4440'],
        'Child1' : [4451, 3607, 4143, 3598],
        'Child2' : ["", "", 4451,3518],
        'Child3' : ["", "","",3531]}
frame = pd.DataFrame(data)

Буду очень благодарен за любую помощь


Ответы (1 шт):

Автор решения: strawdog

У меня получилась довольно неуклюжая конструкция:

import pandas as pd

data = {'Parent Meta`s ID' : ['3516', '3518', '3517', '4440'],
        'Child1' : [4451, 3607, 4143, 3598],
        'Child2' : ["", "", 4451,3518],
        'Child3' : ["", "","",3531]}
df = pd.DataFrame(data)


df["Child1"] = df.values.tolist()
df = df.explode('Child1').iloc[:, :2]
df["Level"] = 2-(df["Parent Meta`s ID"]==df["Child1"])
df.loc[df["Parent Meta`s ID"].duplicated(), "Parent Meta`s ID"]=""
df.loc[df["Level"]==1, "Child1"]=""

df:

  Parent Meta`s ID Child1  Level
0             3516             1
0                    4451      2
0                              2
0                              2
1             3518             1
1                    3607      2
1                              2
1                              2
2             3517             1
2                    4143      2
2                    4451      2
2                              2
3             4440             1
3                    3598      2
3                    3518      2
3                    3531      2

Есть предположение, что многое можно упростить, обработав данные на этапе их подготовки, а не после создания датафрейма.

→ Ссылка