python - 从邻接表创建邻接矩阵
问题描述
我有下一个包含两列的 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)
我怎样才能获得邻接矩阵?
谢谢
解决方案
尝试在第 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
推荐阅读
- spring - 为什么Spring在spring aop中忽略@Transactional?
- reactjs - 使用 reactjs 添加背景图片
- java - 使用 Apache Camel (http4) 的基本 HTTP 获取
- facebook-graph-api - 如何在不破坏级别的 Google 数据工作室和 Google Apps 脚本的情况下按级别进行调用?
- django - DELETE 请求运行两次
- node.js - 使用两个带有 docker 的流星项目 - ECONNREFUSED 127.0.0.1:8082
- apache-nifi - NiFi 查找服务错误 - 无法在查找服务中查找坐标
- r - R dist:计算从少到多的距离
- keras - 如何在 tensorflow 2.0 中使用 tensorboard?
- jenkins - 在 GUI 中哪里设置 Jenkins 根 URL?