我有一个熊猫数据框:
我想为该图生成一个权重传递矩阵M(10000 * 10000),而无需在python中使用循环(因为循环占用大量时间)来进行PageRank计算。对于该图,我假设框架的每一列都作为矩阵的索引,因为它们的值都一直到10000。
FromNodeId ToNodeId
0 0 1
1 0 2
2 0 3
3 0 4
4 0 5
5 0 6
6 0 7
7 0 8
8 0 9
9 0 10
10 0 11
11 0 12
12 0 13
13 0 14
14 0 15
15 0 16
16 1 0
17 1 7
18 1 17
19 1 18
20 1 19
21 1 20
22 1 21
23 1 22
24 1 23
25 1 24
26 1 25
27 1 26
28 1 27
29 1 28
... ... ...
37810 9960 0
37811 9960 1273
37812 9960 9960
37813 9961 0
37814 9961 1273
37815 9961 9961
37816 9964 45
37817 9964 3731
37818 9964 6275
37819 9964 9964
37820 9965 6275
37821 9967 0
37822 9967 3950
37823 9967 5242
37824 9967 9967
37825 9968 0
37826 9968 3950
37827 9968 5242
37828 9968 9968
37829 9970 9971
37830 9972 5526
37831 9977 2742
37832 9977 6596
37833 9978 6596
37834 9980 2742
37835 9980 6596
37836 9981 2742
37837 9981 6596
37838 9990 9995
37839 9995 9990
如何在python中执行此操作?
答案 0 :(得分:0)
您不能像编程概念中那样避免循环,但是可以避免使用python for
。
matrix = np.zeros(size=(10000,10000))
def func(row):
global matrix
matrix[row['FromNodeId'], row['ToNodeId']] = 1
return row # returning for function sake
df.apply(func)
matrix # now contains all values.