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

Python 熊猫:如果与列表内容匹配,返回列值的更快方法?,python,pandas,list-comprehension,Python,Pandas,List Comprehension,我有一个dataframes,其中包含节点值(元组)列表,例如: DF1: 在上面的示例中,V2是V1的子级 名称是一个字符串 FROMNODE是元组 TONODE是元组 CHILDREN是一个元组列表 我试图创建一个名为PARENTS的列,它是一个字符串列表,其中当前记录的FROMNODE与另一个记录的CHILDREN列匹配 以下是我努力实现的一个例子: NAME , FROMNODE, TONODE , CHILDREN , PARENTS V1

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

DF1:

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

名称是一个字符串

FROMNODE是元组

TONODE是元组

CHILDREN是一个元组列表

我试图创建一个名为PARENTS的列,它是一个字符串列表,其中当前记录的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]
这真的花了很长时间。有没有什么方法可以让我更快地得到想要的结果

编辑:


所以我觉得很傻,我已经用深度优先搜索创建了一个节点到节点的图,但我没有意识到这个图是双向的。我只是简单地将我用来查找CHILDREN列的相同逻辑应用到PARENTS上,这在合理的时间范围内解决了问题,而不是试图让dataframe从自身构建引用

其中的数据类型是
元组
字符串
?它们是元组列表。但在
FROMNODE
TONODE
列中,仅是元组,对吗?是的,我澄清了问题。很抱歉说得含糊不清。在您给出的示例中,这似乎与您要求的不匹配,因为V1是V2的父节点,但V2
(0,1)
中的FROMNODE不在V1
[(1,2)]
的子节点中。。。你能不能更新一下或者我遗漏了什么?这些数据类型是
元组
字符串
?它们是元组列表。但是在
FROMNODE
TONODE
列中,只有元组,对吗?是的,我澄清了这个问题。很抱歉说得含糊不清。在您给出的示例中,这似乎与您要求的不匹配,因为V1是V2的父节点,但V2
(0,1)
中的FROMNODE不在V1
[(1,2)]
的子节点中。。。你能帮我更新一下吗,还是我遗漏了什么?
[[name for name in DF1.NAME if child_node in [node_list for node_list in DF1.CHILDREN]] for child_node in DF1.FROMNODE]