透视数据框,使唯一列名变为 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
给定数据帧如下:
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