第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將邊列表轉換為鄰接矩陣

將邊列表轉換為鄰接矩陣

拉風的咖菲貓 2021-08-14 17:16:26
我的數(shù)據(jù)框表示圖的邊列表,格式如下:  node1 node2 weight0     a     c      11     b     c      22     d     c      3我的目標是生成等效的鄰接矩陣:    a b c da   0 0 1 0b   0 0 2 0c   0 0 0 3d   0 0 0 0目前,在構建邊的數(shù)據(jù)幀時,我計算節(jié)點的數(shù)量并創(chuàng)建一個 NxN 數(shù)據(jù)幀并手動填充值。從第一個數(shù)據(jù)幀生成第二個數(shù)據(jù)幀的熊貓方式是什么?
查看完整描述

2 回答

?
牧羊人nacy

TA貢獻1862條經(jīng)驗 獲得超7個贊

決定對這個問題找點樂子。


您可以將node1和轉換node2為 Categorical dtype,然后使用groupby.


from functools import partial


vals = np.unique(df[['node1', 'node2']])

p = partial(pd.Categorical, categories=vals) 

df['node1'], df['node2'] = p(df['node1']), p(df['node2'])


(df.groupby(['node1', 'node2'])

   .first()

   .fillna(0, downcast='infer')

   .weight

   .unstack())


node2  a  b  c  d

node1            

a      0  0  1  0

b      0  0  2  0

c      0  0  0  0

d      0  0  3  0

另一種選擇是直接設置底層數(shù)組值。


df2 = pd.DataFrame(0, index=vals, columns=vals)

f = df2.index.get_indexer

df2.values[f(df.node1), f(df.node2)] = df.weight.values


print(df2)

   a  b  c  d

a  0  0  1  0

b  0  0  2  0

c  0  0  0  0

d  0  0  3  0


查看完整回答
反對 回復 2021-08-14
?
阿晨1998

TA貢獻2037條經(jīng)驗 獲得超6個贊

使用pivot與reindex


In [20]: vals = np.unique(df[['node1', 'node2']])


In [21]: df.pivot(index='node1', columns='node2', values='weight'

                  ).reindex(columns=vals, index=vals, fill_value=0)

Out[21]:

node2  a  b  c  d

node1

a      0  0  1  0

b      0  0  2  0

c      0  0  0  0

d      0  0  3  0

或者使用set_index和unstack


In [27]: (df.set_index(['node1', 'node2'])['weight'].unstack()

            .reindex(columns=vals, index=vals, fill_value=0))

Out[27]:

node2  a  b  c  d

node1

a      0  0  1  0

b      0  0  2  0

c      0  0  0  0

d      0  0  3  0


查看完整回答
反對 回復 2021-08-14
  • 2 回答
  • 0 關注
  • 322 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號