首页 > 解决方案 > 从邻接表创建邻接矩阵

问题描述

我有下一个包含两列的 DF

A   x
A   y
A   z
B   x
B   w
C   x
C   w
C   i

我想产生一个这样的邻接矩阵(计算交叉点)

    A   B   C
A   0   1   2
B   1   0   2
C   2   2   0

我有下一个代码但不起作用:

import pandas as pd

df = pd.read_csv('lista.csv')
drugs = pd.read_csv('drugs.csv')
drugs = drugs['Drug'].tolist()
df = pd.crosstab(df.Drug, df.Gene)
df = df.reindex(index=drugs, columns=drugs)

我怎样才能获得邻接矩阵?

谢谢

标签: pythonpandasadjacency-matrixadjacency-list

解决方案


尝试在第 2 列上进行自我合并,然后进行交叉表:

s = df.merge(df,on='col2').query('col1_x != col1_y')
pd.crosstab(s['col1_x'], s['col1_y'])

输出:

col1_y  A  B  C
col1_x         
A       0  1  1
B       1  0  2
C       1  2  0

推荐阅读