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。这是一个解决我的问题的方法。我希望这对你也有帮助。谢谢你,这对我很有帮助。谢谢你,你节省了我的时间