我有這張桌子:
Head Relation Tail
0 9 1 0
1 10 1 11
2 9 0 23
3 10 1 61
4 9 0 12
5 10 0 66
6 10 0 61
我必須創建一個字典,其 Head 鍵和值等于關系但不重復,并且對于關系的每個值,我必須插入相應的尾部。
例子:
{9 : {1: [10], 0:[23,12]}, 10 : {1:[11,61], 0:[66,61]}}
我真的不知道該怎么做。有人可以幫助我嗎?

第二個示例輸入:
Head Relation Tail
0 207 1 269
1 207 1 61
2 207 0 62
3 208 1 269
4 290 0 269
輸出:
{207: {0: [62], 1: [269,61]}, 208: {0: nan, 1: [269]},
290: {0: [269], 1: nan}}
我想洗掉 nans
uj5u.com熱心網友回復:
你可以使用pivot_tableand to_dict:
(df.pivot_table(index='Head', columns='Relation', values='Tail', aggfunc=list)
.to_dict('index')
)
或者,反過來:
(df.pivot_table(index='Relation', columns='Head', values='Tail', aggfunc=list)
.to_dict()
)
輸出:
{9: {0: [23, 12], 1: [0]}, 10: {0: [66, 61], 1: [11, 61]}}
對輸出進行后處理以洗掉 NaN:
d = (df.pivot_table(columns='Head', index='Relation', values='Tail', aggfunc=list)
.to_dict()
)
d2 = {k: {k2:v2 for k2,v2 in v.items() if pd.isna(v2) is not True}
for k,v in d.items()}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/417544.html
標籤:
