Python 从邻接列表创建邻接矩阵
我有两列的下一个DFPython 从邻接列表创建邻接矩阵,python,pandas,adjacency-matrix,adjacency-list,Python,Pandas,Adjacency Matrix,Adjacency List,我有两列的下一个DF A x A y A z B x B w C x C w C i 我想生成这样的邻接矩阵(计算交点) 我有下一个代码,但不起作用: 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
A x
A y
A z
B x
B w
C x
C w
C i
我想生成这样的邻接矩阵(计算交点)
我有下一个代码,但不起作用:
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)
如何获得邻接矩阵
谢谢尝试在第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
>>> df
Drug_y A B C
Drug_x
A 0 1 1
B 1 0 2
C 1 2 0
尝试在第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
>>> df
Drug_y A B C
Drug_x
A 0 1 1
B 1 0 2
C 1 2 0
输入:
在交叉表前面的gene上合并,并用零填充对角线
df = pd.merge(drugs, drugs, on="Gene")
df = pd.crosstab(df["Drug_x"], df["Drug_y"])
np.fill_diagonal(df.values, 0)
输出:
col1_y A B C
col1_x
A 0 1 1
B 1 0 2
C 1 2 0
>>> df
Drug_y A B C
Drug_x
A 0 1 1
B 1 0 2
C 1 2 0
输入:
在交叉表前面的gene上合并,并用零填充对角线
df = pd.merge(drugs, drugs, on="Gene")
df = pd.crosstab(df["Drug_x"], df["Drug_y"])
np.fill_diagonal(df.values, 0)
输出:
col1_y A B C
col1_x
A 0 1 1
B 1 0 2
C 1 2 0
>>> df
Drug_y A B C
Drug_x
A 0 1 1
B 1 0 2
C 1 2 0
优雅,谢谢!优雅,谢谢!