透视数据框,使唯一列名变为 headers 并且唯一引用变为索引(稀疏矩阵)

pivot dataframe such that unique column names become headers and unique references become index (sparse matrix)

给定数据帧如下:

index    name    reference    value
0        name_1  ab1234       0.1 
1        name_1  cd1111       0.2
2        name_1  cd1112       0.01
3        name_2  ab1234       0.03       
4        name_2  ab4567       0.1
...
n        name_j  lm1234       0.x

如何将数据转换为新的数据框,使得唯一引用是索引,唯一名称是列。

我们知道构成索引的唯一引用是索引reference.unique()。我们还知道构成列 headers 的唯一名称是 name.unique().

预期结果将是这种形式的稀疏矩阵:

reference    name_1    name_2    name_3    ...    name j
ab1234       0.1       0.03
cd1111       0.2
cd1112       0.01
ab1234       
ab4567                 0.1

...                                        ...    
lm1234                                            0.x
 

期待有一种矢量化方式或一种可行的 pivot。 例如,尝试过这样的事情,但失败了:

new_df = df.pivot(index='reference', columns=name.unique(), values='value')
df.pivot_table(index='reference', columns='name', values='value', aggfunc='sum')

输出:

name       name_1  name_2
reference
ab1234       0.10    0.03
ab4567        NaN    0.10
cd1111       0.20     NaN
cd1112       0.01     NaN