【发布时间】:2021-06-03 02:00:48
【问题描述】:
考虑以下数据框:
id1 id2
0 aaa 111
1 bbb 222
2 333 ccc
3 999 zzz
4 ccc 111
5 888 zzz
6 zzz 222
7 ddd 888
8 eee 888
如何递归获取给定输入的所有孩子及其孙子的每场比赛的数据框,在我的例子中,输入 = [111, 222]
即
家长 1:111
孩子1:aaa
Child2:ccc(从第 4 行开始)
Child2 的孩子:333(从第 2 行开始)
父 2:222
Child1:bbb
Child2:zzz(从第 6 行开始)
Child2 的 ChildA:888(从第 5 行开始)
Child2 的 ChildB:999(从第 3 行开始)
ChildA 的 Child_i:ddd(从第 8 行开始)
ChildA 的 Child_ii:eee(从第 7 行开始)
每个级别(父级->子级->子级)的预期输出将是:
### for i = 111
# parent level
id1 id2
0 aaa 111
1 ccc 111
# child level
id1 id2
0 333 ccc
### for i = 222
# parent level
id1 id2
0 bbb 222
1 zzz 222
# child level
id1 id2
0 888 zzz
1 999 zzz
# child of child level
id1 id2
0 ddd 888
1 eee 888
我试过了:
parents = [111, 222]
while len(parents) != 0:
for i in parents:
children = df[df['id2'].apply(lambda x: i in str(x))][['id1', 'id2']]
print(children) #print dataframe of match
parents = children['id1']
但它并没有完全通过,我想将 lambda 中的 i 更改为列表理解,但没有成功。
【问题讨论】:
-
预期的数据框是什么?
-
对于每场比赛,只需 df[['id1', 'id2']],然后我可以将它们连接起来
-
@bloo 请用您的预期输出更新问题..