我以前从来没有用过熊猫或者矮胖来做这个,我想知道是如何在熊猫中构造有标签的邻接矩阵的。
我的数据以类似的形式出现。每一种"uL22"类型的东西都是一种蛋白质,阵列是这种蛋白质的近邻。因此(在下面的示例中),邻接矩阵将在bL31行、uL5列和逆列中有1s。
我的问题有两个:
邻接矩阵的实际维数是由一组蛋白质名称决定的,这些蛋白质名称通常比proteins.
100nbrtree的邻域关系的100 by 100矩阵,不太确定如何“绑定”名称(例如uL32等)。在这100个蛋白质中,在这个矩阵的行和列中,当我开始移动名字周围的行时,相应地移动。(我计划将邻接矩阵转换成块对角线结构) "nbrtree": {
"bL31": ["uL5"],
"uL5": ["bL31"],
"bL32": ["uL22"],
"uL22": ["bL32","bL17"],
...
"bL33": ["bL35"],
"bL35": ["bL33","uL15"],
"uL13": ["bL20"],
"bL20": ["uL13","bL21"]
}
>>>len(nbrtree)
>>>40我确信这是人们每天都在做的操作,我只是不太熟悉数据处理如何正常工作,所以我可能在寻找一些非常明显的东西。非常感谢!
发布于 2020-04-17 07:25:22
我不完全理解你的问题,但从我得到的结果来看,我试了一下这段代码。
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)此代码的输出为
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中,请更改为
data = pd.DataFrame(0, index = ['index']+col, columns = ['column']+col, dtype = int)
data.loc['index'] = [0]+col
data.loc[:, 'column'] = ['*']+colhttps://stackoverflow.com/questions/61264815
复制相似问题