使用唯一值列表重塑熊猫数据框

时间:2019-03-14 18:55:49

标签: python pandas numpy

我有一个包含12行3列的数据框。 “名称”列上的每个值都可以与“目标”列上的许多值关联。对于每个值,还有一个关联的“ val”,它是一个数字变量。 示例:

name  val target
a     6.3    la
b     3.5    le
c     10     li
d     8      lo
e     2.3    lu
f     5.6    lao
g     4.7    laoo
h     4.7    laooo
a     4.8    lo
j     1.2    le
b     1.5    re
k     9.8    la

我想使用“目标”列中的唯一值作为新列来重塑数据框,并将对应的“值”附加到每一行。由于每个目标的“ val”数量不同,因此新数据框应使用零填充空行。例如:

la     le     li     lo     lu    ...
6.3    3.5    10     8      2.3   ...
9.8    1.2     0     4.8    0     ...

我找到了一个可以做到这一点的脚本,但是要理解它在做什么却相当复杂。是否可以仅使用几行使用numpy和/或pandas来做到这一点?

1 个答案:

答案 0 :(得分:1)

x = pd.DataFrame.from_dict(
    df.groupby('target')['val'].apply(np.unique).to_dict(), 'index').T.fillna(0)

print(x)

输出:

    la  lao  laoo  laooo   le    li   lo   lu   re
0  6.3  5.6   4.7    4.7  1.2  10.0  4.8  2.3  1.5
1  9.8  0.0   0.0    0.0  3.5   0.0  8.0  0.0  0.0