Сумма значений в родительской дочерней иерархии df Python - PullRequest
0 голосов
/ 20 сентября 2018

Как суммировать значения в родительском дочернем фрейме данных в Python?

У меня есть следующий DF в моей записной книжке Python

    Account Rubriek         debet   credit  parent
0   0       Vaste activa    NaN     NaN     null
1   0.0     Materiele...    NaN     NaN     0
2   0.0.0   Terreinen       50000.0 NaN     0.0
3   0.0.1   Gebouwen        150000.0NaN     0.0
4   0.0.2   Verbouwi..      20000.0 NaN     0.0
5   0.0.3   Machines        NaN     NaN     0.0
6   0.0.4   Gereedschappen  NaN     NaN     0.0
7   0.0.5   Inventaris      NaN     NaN     0.0
8   0.0.6   Wagenpark       NaN     NaN     0.0
9   0.1     Cummulitieve    NaN     NaN     0

Я хочу закончить с накопленными значениямиродительские счета.Я знаю, что это можно сделать с помощью рекурсии.У меня есть следующее:

Теоретически я думаю, что алгоритм должен выглядеть следующим образом:

if account is leaf node:
    debet_sum = debet
else
    debet_sum = sum of debet_sum where account == parent

Я могу определить, является ли учетная запись конечным узлом по:

df1['Account'].isin(df1['parent'])

Значение debet_sum для строки 1 можно получить с помощью:

df1[df1.iloc[1]['Account'] == df1['parent']]['debet'].sum()

Моя первая попытка объединить это выглядит следующим образом:

def get_debet_sum(row):
    if not df1['Account'].isin(df1['parent']):
        debet_sum = df1.debet
    else
        debet_sum = df1[df1['Account'] == df1['parent']]['debet'].sum()

df1.assign(debet_sum = df1.apply(get_debet_sum, axis = 1))

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

...