将数据从列向量转换为矩阵

Transform data from column vector to matrix

我得到了一个看起来像这样的 xlsx 文件:

Label-Label   Data
A-B           1
C-D           5
A-D           4
B-F           10
H-I           12

所以我的目标是使用“Label-Label”列通过在“-”上拆分使该数据成为矩阵。我的意思是从上面的数据到这个:

  B D F I
A 1 4 0 0
C 0 5 0 0
B 0 0 10 0
H 0 0 0 12

目标是使每个(行、列)对应于“行-列”,即“标签-标签”。任何不在初始数据集中的行列组合都将在此处设置为 0,并且初始数据中的任何重复行值都存储在矩阵数据(例如 A)的同一行中。同样,任何重复列值都将它们的值存储在矩阵中的同一列中(例如 D)。

首先读取 pandas 数据帧,然后执行 pivot_table:

(df['Label-Label'].str.split('-', expand=True)
                  .assign(data=df.Data)
                  .pivot_table('data',0,1, fill_value=0))

1    B    D     F     I
0                      
A  1.0  4.0   0.0   0.0
B  0.0  0.0  10.0   0.0
C  0.0  5.0   0.0   0.0
H  0.0  0.0   0.0  12.0