将3列(x,y,结果)Python Pandas DataFrame转换为以x(唯一)为行,y(唯一)为列的结果值的数据帧

毫微微交易员

我想像df这样转换一个Python Pandas DataFrame

      x  y  result
id                
1  -0.8 -1    0.64
2  -0.8  0   -0.36
3  -0.4 -1    0.16
4  -0.4  0   -0.84
5   0.0 -1    0.00
6   0.0  0   -1.00
7   0.4 -1    0.16
8   0.4  0   -0.84
9   0.8 -1    0.64
10  0.8  0   -0.36

到这样的DataFrame:

        -1     0
-0.8  0.64 -0.36
-0.4  0.16 -0.84
 0.0     0 -1.00
 0.4  0.16 -0.84
 0.8  0.64 -0.36

我知道如何获得唯一的x值:

df["x"].unique()

和唯一的y值,具有:

df["y"].unique()

但我不知道如何result在DataFrame中“分配”列值。

我宁愿使用向量化解决方案,以避免for循环。

贝扎德·诺里

那是一个枢轴操作,您可以使用.pivot_table

>>> df.pivot_table(values='result', index='x', columns='y')
y       -1     0
x               
-0.8  0.64 -0.36
-0.4  0.16 -0.84
 0.0  0.00 -1.00
 0.4  0.16 -0.84
 0.8  0.64 -0.36

.pivot

>>> df.pivot(index='x', columns='y')['result']
y       -1     0
x               
-0.8  0.64 -0.36
-0.4  0.16 -0.84
 0.0  0.00 -1.00
 0.4  0.16 -0.84
 0.8  0.64 -0.36

.groupby后跟.unstack

>>> df.groupby(['x', 'y'])['result'].aggregate('first').unstack()
y       -1     0
x               
-0.8  0.64 -0.36
-0.4  0.16 -0.84
 0.0  0.00 -1.00
 0.4  0.16 -0.84
 0.8  0.64 -0.36

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档