我有一个包含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来做到这一点?
答案 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