общий root присваивание всем дочерним и подчиненным группам всех прямо и косвенно связанных записей с использованием python pandas - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь сгруппировать все дочерние и дочерние объекты (прямые или косвенные), связанные с root идентификатором узла (root - это тот, который был создан первым на основе даты)

Первые данные могут генерироваться здесь:

data = [['tom', 'hanks', '2020-01-02 08: 21: 50.617', 'A198'], ['tommy', 'hanks', ' 2020-01-02 06: 21: 50.617 ',' A125 '], [' tami ',' robert ',' 2020-01-02 05: 21: 50.617 ',' A456 '], [' robby ',' jones ',' 2020-01-03 10: 21: 50.617 ',' A566 '], [' robo ',' martin ',' 2020-01-03 07: 21: 50.617 ',' A778 '], [' tobi ',' profet ',' 2020-01-03 11: 21: 50.617 ',' A454 '], [' amber ',' serra ',' 2020-01-02 04: 21: 50.617 ',' A444 ' ], ['amana', 'kordos', '2020-01-02 04: 21: 50.617', 'A387'], ['amberosa', 'maria', '2020-01-02 04: 21: 50.617' , 'A777']]

df = pd.DataFrame (данные, столбцы = ['First_name', 'Last_Name', 'Date_of_transaction', 'id'])

df ['Date_of_transaction '] = pd.to_datetime (df [' Date_of_transaction '], формат ='% Y-% m-% d% H:% M:% S.% f ')

df = df.sort_values ​​( by = ['Date_of_transaction'])

df = df.re set_index (drop = True) df

df

Другой фрейм данных имеет левый и правый индекс с вероятностью совпадения

prob = [[1 , 3,0.88], [1,4,0.82], [3,2,0.86], [5,2,0.85], [6,7,0.86], [9,7,0,86]] prob_df = pd. DataFrame (prob, columns = ['left_index', 'right_index', 'вероятность']) prob_df

prob_df

В этом примере 1 связано с 3 и 4. 3 дополнительно связан с 2, а 2 связан с 5., поэтому я хочу создать новый фрейм данных, который будет иметь оригинальный df с новым столбцом 'New_unique_ID'

needed_Result_df

1 Ответ

0 голосов
/ 10 января 2020

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

{1:[1, 2, 3, 4, 5],
2:[1, 2, 3, 5]
ect...

Создание алгоритма поиска по дереву для ваших целей не является простым делом, и было бы трудно объяснить, если бы я написал его для вас и передал. Поэтому, вероятно, лучше, если вы разработали его сами, поэтому вот вики: https://en.wikipedia.org/wiki/Search_tree. Node tree

...