首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在熊猫中创建邻接矩阵,以便在重新排列行和科尔时保留标签

如何在熊猫中创建邻接矩阵,以便在重新排列行和科尔时保留标签
EN

Stack Overflow用户
提问于 2020-04-17 05:38:23
回答 1查看 385关注 0票数 1

我以前从来没有用过熊猫或者矮胖来做这个,我想知道是如何在熊猫中构造有标签的邻接矩阵的。

我的数据以类似的形式出现。每一种"uL22"类型的东西都是一种蛋白质,阵列是这种蛋白质的近邻。因此(在下面的示例中),邻接矩阵将在bL31行、uL5列和逆列中有1s。

我的问题有两个:

邻接矩阵的实际维数是由一组蛋白质名称决定的,这些蛋白质名称通常比proteins.

  • I'm中包含的蛋白质大得多,所以我想知道如何最好地将数据映射到该集合,例如,对应于100nbrtree的邻域关系的100 by 100矩阵,不太确定如何“绑定”名称(例如uL32等)。在这100个蛋白质中,在这个矩阵的行和列中,当我开始移动名字周围的行时,相应地移动。(我计划将邻接矩阵转换成块对角线结构)

代码语言:javascript
复制
"nbrtree": {
        "bL31": ["uL5"],
        "uL5": ["bL31"],
        "bL32": ["uL22"],
        "uL22": ["bL32","bL17"],
         ...
        "bL33": ["bL35"],
        "bL35": ["bL33","uL15"],
        "uL13": ["bL20"],
        "bL20": ["uL13","bL21"]
}
>>>len(nbrtree)
>>>40

我确信这是人们每天都在做的操作,我只是不太熟悉数据处理如何正常工作,所以我可能在寻找一些非常明显的东西。非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-17 07:25:22

我不完全理解你的问题,但从我得到的结果来看,我试了一下这段代码。

代码语言:javascript
复制
from pprint import pprint as pp
import pandas as pd
dic = {"first": {
        "a": ["b","d"],
        "b": ["a","h"],
        "c": ["d"],
        "d": ["c","g"],
        "e": ["f"],
        "f": ["e","d"],
        "g": ["h","a"],
        "h": ["g","b"]
}}
col = list(dic['first'].keys())
data = pd.DataFrame(0, index = col, columns = col, dtype = int)
for x,y in dic['first'].items():
        data.loc[x,y] = 1
pp(data)

此代码的输出为

代码语言:javascript
复制
   a  b  c  d  e  f  g  h
a  0  1  0  1  0  0  0  0
b  1  0  0  0  0  0  0  1
c  0  0  0  1  0  0  0  0
d  0  0  1  0  0  0  1  0
e  0  0  0  0  0  1  0  0
f  0  0  0  1  1  0  0  0
g  1  0  0  0  0  0  0  1
h  0  1  0  0  0  0  1  0

注意到,这里的邻接矩阵是不对称的,因为我采取了一些随机数据

若要将标签吸收到dataframe中,请更改为

代码语言:javascript
复制
data = pd.DataFrame(0, index = ['index']+col, columns = ['column']+col, dtype = int)
data.loc['index'] = [0]+col
data.loc[:, 'column'] = ['*']+col
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61264815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档