我有一个 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
我想使用“目标”列中的唯一值作为新列来 reshape 我的数据框,并将相应的“val”附加到每行。由于每个目标有不同数量的“val”,新数据帧应该用零填充空行。例如:
la le li lo lu ...
6.3 3.5 10 8 2.3 ...
9.8 1.2 0 4.8 0 ...
我找到了一个可以做到这一点的脚本,但理解它在做什么非常复杂。是否可以使用 numpy 和/或 pandas 只需几行即可完成此操作?
最佳答案
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
关于python - 使用唯一值列表 reshape pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55170096/