熊猫:如果与列表内容匹配,返回列值的更快方法?

时间:2019-04-29 23:15:01

标签: python pandas list-comprehension

我有一个数据框,其中包含节点值(元组)的列表,例如:

DF1:

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

在上面的示例中,V2是V1的子级。

NAME是一个字符串

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]

这真的花了很长时间。有什么办法可以更快地获得预期的结果吗?

编辑:

所以我真的很傻,我已经使用深度优先搜索创建了一个节点到节点图,但我没有意识到该图是双向的。我只是简单地应用了与在PARENTS上找到CHILDREN列相同的逻辑,因此在合理的时间内解决了该问题,而不是试图使数据框自己建立引用。

0 个答案:

没有答案