请在以下位置查找我的数据帧:
df = pd.DataFrame({'class': ['class_b', 'class_a', 'class_c', 'class_d'], 'sub_class': ['class_d', None, 'class_e', 'class_a'], 'entities': [5, 1, 7, 6]})
print(df)
class sub_class entities
0 class_b class_d 5
1 class_a None 1
2 class_c class_e 7
3 class_d class_a 6
根据标题,我只是试图像我们在os.walk
中所做的那样寻找子类,但我无法弄清楚.例如,class_b
有class_d
个子类,这个子类也有一个子类(class_a
),我们有时可以有多达5个子级别.
我的预期输出是:
class all_subclass sum_entites
0 class_a [] 1
1 class_b [class_d, class_a] 12
2 class_c [class_e] 7
3 class_d [class_a] 7
4 class_e [] 0
我在下面犯了一个错误的代码.我想做一个while
圈的循环,让Mergin保持下go ,直到没有对手,但感觉不太好.
df1 = df.merge(df, left_on='sub_class', right_on='class', how="left", indicator=True).filter(like='class')
result = df1.groupby('class_x').apply(lambda x: list(x.dropna().T.values.tolist())).to_dict()
result
{'class_a': [[], [], [], []],
'class_b': [['class_b'], ['class_d'], ['class_d'], ['class_a']],
'class_c': [[], [], [], []],
'class_d': [[], [], [], []]}
伙计们,你们有什么建议吗?