Pandas: более быстрый способ вернуть значение столбца при совпадении с содержимым списка? - PullRequest
1 голос
/ 30 апреля 2019

У меня есть данные, которые содержат список значений узлов (кортежей), таких как:

DF1:

NAME ,    FROMNODE,    TONODE ,   CHILDREN
V1   ,    (8,9)        (0,1)  ,   [(1,2)]
V2   ,    (0,1)        (1,2)  ,   []

В приведенном выше примере V2 является дочерним по отношению к V1.

ИМЯ является строкой

FROMNODE - это кортежи

TONODE - это кортежи

ДЕТИ - это список кортежей

Я пытаюсь создать столбец с именем PARENTS, который будет представлять собой список строк из NAME, в котором FROMNODE текущей записи сопоставляется в столбце CHILDREN другой записи.

Вот пример того, чего я пытаюсь достичь:

NAME ,    FROMNODE,    TONODE ,   CHILDREN            ,    PARENTS
V1   ,    (8,9)        (0,1),     [(1,2)]             ,     []
V2   ,    (0,1)        (1,2),     []                  ,     [V1]

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

[[name for name in DF1.NAME if child_node in [node_list for node_list in DF1.CHILDREN]] for child_node in DF1.FROMNODE]

Это действительно очень долго. Можно ли как-нибудь быстрее получить желаемый результат?

Edit:

Так что я чувствую себя по-настоящему глупо, я уже создал графа между узлами, используя поиск в глубину, и я не осознавал, что график был двунаправленным. Я просто применил ту же логику, которую использовал для нахождения столбца ДЕТИ на РОДИТЕЛЯХ, и это решило проблему в разумные сроки, вместо того, чтобы попытаться сделать так, чтобы блок данных строил ссылку на себя.

...