我有一个两列数据集,描述了形成一棵大树的多个子父关系.我想用它来构建每个节点的每个后代的更新列表.
child parent
1 2010 1000
7 2100 1000
5 2110 1000
3 3000 2110
2 3011 2010
4 3033 2100
0 3102 2010
6 3111 2110
Run Code Online (Sandbox Code Playgroud)
descendant ancestor
0 2010 1000
1 2100 1000
2 2110 1000
3 3000 1000
4 3011 1000
5 3033 1000
6 3102 1000
7 3111 1000
8 3011 2010
9 3102 2010
10 3033 2100
11 3000 2110
12 3111 2110
Run Code Online (Sandbox Code Playgroud)
最初我决定使用DataFrames的递归解决方案.它按预期工作,但熊猫的效率非常低.我的研究让我相信使用NumPy数组(或其他简单数据结构)的实现在大型数据集(数千个记录中的10个)上要快得多.
import pandas as pd
df = pd.DataFrame( …
Run Code Online (Sandbox Code Playgroud) 我有一个包含父 ID 和子 ID 的 Pandas 数据框。我需要帮助构建一个更新的数据框,列出每个父母的每个后代。
为了澄清输出应该是什么样子,这里有一篇关于dba.stackexchange 的文章,使用 SQL 来完成我在 python 中尝试做的事情。
这是输入 DataFrame 的示例:
parent_id child_id
0 3111 4321
1 2010 3102
2 3000 4023
3 1000 2010
4 4023 5321
5 3011 4200
6 3033 4113
7 5010 6525
8 3011 4010
9 3102 4001
10 2010 3011
11 4023 5010
12 2110 3000
13 2100 3033
14 1000 2110
15 5010 6100
16 2110 3111
17 1000 2100
18 5010 6016
19 3033 4311 …
Run Code Online (Sandbox Code Playgroud)