Python 将3列(x,y,result)数据帧转换为结果值的数据帧,其中x(unique)为行,y(unique)为列
我想转换Python数据帧Python 将3列(x,y,result)数据帧转换为结果值的数据帧,其中x(unique)为行,y(unique)为列,python,numpy,pandas,dataframe,Python,Numpy,Pandas,Dataframe,我想转换Python数据帧df如下: 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 对于
df
如下:
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
对于这样的数据帧:
-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()
但我不知道如何在DataFrame中“分发”result
column值
我更喜欢矢量化解决方案,以避免for循环。这是一种枢轴操作,您可以使用:
或:
或紧随其后:
哇!谢谢!
pivot
和pivot\u table
之间有什么区别?@FemtoTrader查看API链接了解详细信息。我将查看API链接。即使时间更长,我也喜欢您的groupby解决方案,因为它帮助我理解groupby、aggregate和unstack方法。
>>> 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
>>> 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
>>> 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