我有一个具有两列的简单数据框,并希望将其转换为具有相同列和行数的矩阵。
我有几种组合作为行,并且想将它们复制到列中,以便在视觉上查看关系的强度(可能是和弦图)。
这是我正在使用的数据框的示例:
variables count
a 13
b 9
c 8
d 6
e 10
f 12
g 9
h 7
a_b 7
a_b_h 8
这是我想要的输出,考虑到我有几种组合,而不仅仅是配对。
a b c d e f g h a_b a_b_h
a 13 7 0 0 0 0 0 0 0 0
b 7 9 0 0 0 0 0 0 0 0
c 0 0 8 0 0 0 0 0 0 0
d 0 0 0 6 0 0 0 0 0 0
e 0 0 0 0 10 0 0 0 0 0
f 0 0 0 0 0 12 0 0 0 0
g 0 0 0 0 0 0 9 0 0 0
h 0 0 0 0 0 0 0 7 0 0
a_b 0 0 0 0 0 0 0 0 7 0
a_b_h 0 0 0 0 0 0 0 0 0 8
以此类推,并包含所有组合。
然后目的是建立一个类似于以下的和弦图-该图显示了变量之间关系的强度
答案 0 :(得分:1)
使用np.diag
:
df = pd.DataFrame({"variables": ["a", "b", "c", "d", "e", "f", "g", "h", "a_b", "a_b_h"],
"count": [13, 9, 8, 6, 10, 12, 9, 7, 7, 8]})
df2 = pd.DataFrame(np.diag(df["count"]), columns=df["variables"], index=df["variables"])
输出:
variables a b c d e f g h a_b a_b_h
variables
a 13 0 0 0 0 0 0 0 0 0
b 0 9 0 0 0 0 0 0 0 0
c 0 0 8 0 0 0 0 0 0 0
d 0 0 0 6 0 0 0 0 0 0
e 0 0 0 0 10 0 0 0 0 0
f 0 0 0 0 0 12 0 0 0 0
g 0 0 0 0 0 0 9 0 0 0
h 0 0 0 0 0 0 0 7 0 0
a_b 0 0 0 0 0 0 0 0 7 0
a_b_h 0 0 0 0 0 0 0 0 0 8