[英]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.