簡體   English   中英

從邊列表創建直接邊矩陣

[英]Create a direct edge matrix from edge list

樣本數據:

data = { 
    'node1': [1, 1,1, 2,2,5],
 'node2': [8,16,22,5,25,10],
 'weight': [1,1,1,1,1], }
df = pd.DataFrame(data, columns = ['node1','node2','weight'])

給定的數據是邊列表,第一列表示node 1 ,第二列表示直接連接到第一個節點的節點。 給定的是一個邊列表,第column 1作為node1 ,第column 2作為node2和權重。 我想創建一個矩陣,每一行代表給定節點的所有直接邊。 (每一行是一個節點,其中的列是給定節點的直接邊)使用 Pandas Dataframe。

輸出:

8   16  22

5   25  0

0   0   0

0   0   0

10  0   0

國際大學聯盟

df=df.assign(Cu=df.groupby('node1').cumcount()).set_index('Cu').groupby('node1').apply(lambda x : x['node2']*x['weight']).unstack('Cu').fillna(0)
df
Out[71]: 
Cu        0     1     2
node1                  
1       8.0  16.0  22.0
2       5.0  25.0   0.0
5      10.0   0.0   0.0

為了讓你擺脫困境,你可以reindex + fillna

編輯:注意你的預期輸出 contian 一些全 0 行,

df.reindex([1,2,3,4,5]).fillna(0)
Out[107]: 
Cu        0     1     2
node1                  
1       8.0  16.0  22.0
2       5.0  25.0   0.0
3       0.0   0.0   0.0
4       0.0   0.0   0.0
5      10.0   0.0   0.0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM