为大 ID 编号创建邻接矩阵
Create adjacency matrix for large id numbers
我从Openstreetmap
中提取了一些道路数据,十字路口之间的关系用node
表示,每个node
都有一个id
,提取的数据已经转换为形状 (50,2)
的数据框,因为我试图在小面积土地上实施
数据框看起来像这样
id_1 id_2
0 42807002 8219742091
1 8219742091 8219737904
2 8219737904 42807004
3 42839143 8219742075
4 8219742075 42807002
5 42807002 42839146
6 42839146 42839155
7 42839155 42839161
8 42839161 42839168
9 42839168 2875111804
10 2875111804 42839172
11 42839146 8219742083
12 8219742083 8219742024
13 8219742024 42845825
14 42839161 8219742048
15 8219742048 8219742063
16 8219742063 42862789
17 42839155 8219742066
18 8219742066 5427796641
19 5427796641 5427796639
20 5427796639 5427796630
为了进一步说明,这是我的节点之间的图形关系。
每条记录显示id_1和id_2之间有一个link。
我想为这个数据框创建一个 adjacency matrix
,但我有一个很大的问题,id 名称太大(最大值是 8219742092)。我尝试使用 networkx
使用此代码
G = nx.from_pandas_adjacency(df)
但正如我所料,它不起作用,因为 networkx
adjacency
需要从 0 到 8219742092 的节点,而数字 8219742092 太大了,无法从中创建数据集。
如何根据这些数据制作邻接矩阵?
小记:id不能重命名
尝试通过交叉表使用此代码
cross = pd.crosstab(df['id_1'],df['id_2'])
adjacency_matrix=cross.values
我从Openstreetmap
中提取了一些道路数据,十字路口之间的关系用node
表示,每个node
都有一个id
,提取的数据已经转换为形状 (50,2)
的数据框,因为我试图在小面积土地上实施
数据框看起来像这样
id_1 id_2
0 42807002 8219742091
1 8219742091 8219737904
2 8219737904 42807004
3 42839143 8219742075
4 8219742075 42807002
5 42807002 42839146
6 42839146 42839155
7 42839155 42839161
8 42839161 42839168
9 42839168 2875111804
10 2875111804 42839172
11 42839146 8219742083
12 8219742083 8219742024
13 8219742024 42845825
14 42839161 8219742048
15 8219742048 8219742063
16 8219742063 42862789
17 42839155 8219742066
18 8219742066 5427796641
19 5427796641 5427796639
20 5427796639 5427796630
为了进一步说明,这是我的节点之间的图形关系。
每条记录显示id_1和id_2之间有一个link。
我想为这个数据框创建一个 adjacency matrix
,但我有一个很大的问题,id 名称太大(最大值是 8219742092)。我尝试使用 networkx
G = nx.from_pandas_adjacency(df)
但正如我所料,它不起作用,因为 networkx
adjacency
需要从 0 到 8219742092 的节点,而数字 8219742092 太大了,无法从中创建数据集。
如何根据这些数据制作邻接矩阵?
小记:id不能重命名
尝试通过交叉表使用此代码
cross = pd.crosstab(df['id_1'],df['id_2'])
adjacency_matrix=cross.values