У меня есть фрейм данных, в котором некоторые строки имеют отношения родитель-потомок.Например, 1002 является родителем 1003, 1003 является родителем 1004
import pandas as pd
import numpy as np
df = pd.DataFrame(columns=['Id', 'Parent Id', 'Child Id', 'A', 'B'],
data=[[1001, np.nan, 1005, 'A1001', 'B1001'],
[1002, np.nan, 1003, 'A1002', 'B1002'],
[1003, 1002, 1004, 'A1003', np.nan],
[1004, 1003, np.nan, 'A1004', np.nan],
[1005, 1001, np.nan, 'A1005', np.nan]
])
print(df)
Id Parent Id Child Id A B
0 1001 NaN 1005.0 A1001 B1001
1 1002 NaN 1003.0 A1002 B1002
2 1003 1002.0 1004.0 A1003 NaN
3 1004 1003.0 NaN A1004 NaN
4 1005 1001.0 NaN A1005 NaN
Я хочу объединить строки, чтобы сохранить только те строки без дочернего элемента.Я понимаю, что могу сделать это с
df = df[df['Child Id'].isnull()]
Однако некоторая информация появляется только в родительской строке, но отсутствует в дочерних строках, например, столбец «B» из 1002. Я хочу наследовать ее в последней дочерней строке.
Ниже ожидаемый результат:
Id Parent Id Child Id A B
3 1004 1003.0 NaN A1004 B1002
4 1005 1001.0 NaN A1005 B1001
Вместо итерации строк, есть ли встроенный метод панд, который я могу использовать?