假設我有一個資料框
df1 = pd.DataFrame({'parent id': [0,0,2,2,2,2,2,2,3,3,4,4,4],
'id' : [1,2,3,4,11,12,13,16,14,15,41,42,43]})
我想使用這些資料創建一棵樹,然后將這棵樹表示為這樣的字典:
tree = {0: [1, {2: [{3: [14, 15]}, {4: [41, 42, 43]}, 11, 12, 13, 16]}]})
我該怎么做?
uj5u.com熱心網友回復:
串列中物件/數字的順序與您的不完全一樣,但我猜這無關緊要。
items = df[~df['id'].isin(df['parent id'])].groupby('parent id').apply(lambda x: {x['parent id'].iloc[0]: x['id'].tolist()})
df[df['id'].isin(df['parent id'])].apply(lambda x: items[x['parent id']][x['parent id']].append(items[x['id']]), axis=1)
tree = items.iloc[0]
輸出:
>>> tree
{0: [{2: [{4: [41, 42, 43]}, {3: [14, 15]}, 11, 12, 13, 16]}, 1]}
輸出(格式化):
{
0: [
{
2: [
{
4: [
41,
42,
43
]
},
{
3: [
14,
15
]
},
11,
12,
13,
16
]
},
1
]
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/366290.html
上一篇:運行相同的程式直到條件滿足
