Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为大id号创建邻接矩阵_Python_Networkx_Openstreetmap_Adjacency Matrix - Fatal编程技术网

Python 为大id号创建邻接矩阵

Python 为大id号创建邻接矩阵,python,networkx,openstreetmap,adjacency-matrix,Python,Networkx,Openstreetmap,Adjacency Matrix,我从Openstreetmap中提取了一些道路数据。十字路口之间的关系表示在节点中,每个节点都有一个id,提取的数据已转换为一个形状为(50,2)的数据框,因为我试图在小型土地上实现 数据框如下所示 id_1 id_2 0 42807002 8219742091 1 8219742091 8219737904 2 8219737904 42807004 3 42839143 8219742075 4 8219742075 428

我从
Openstreetmap
中提取了一些道路数据。十字路口之间的关系表示在
节点中,每个
节点都有一个
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之间存在链接

我想为这个数据帧创建一个
邻接矩阵
,但是我有一个很大的问题,id名称太大(最大值是8219742092)。我尝试使用
networkx

G = nx.from_pandas_adjacency(df)
但正如我所预料的那样,它不起作用,因为
networkx
邻接
需要从0到8219742092的节点,而8219742092的数目太大,无法从中创建数据集

如何根据这些数据生成邻接矩阵


小提示:我无法重命名id。

尝试使用交叉表使用此代码

cross = pd.crosstab(df['id_1'],df['id_2'])
adjacency_matrix=cross.values

本质上,您的图是一个稀疏图,创建邻接矩阵从来都不是稀疏图的好解决方案,您必须尝试使用其他解决方案,如邻接列表或边列表等。否则,您可以创建一个将节点ID映射到小映射ID的字典,然后使用映射ID。这是一个解决我的问题的方法。我希望这对你也有帮助。谢谢你,这对我很有帮助。谢谢你,你节省了我的时间