如何在Pandas/Python中将(x,y,k)转换为k矩阵,其中x为行,y为列?
根据标题,我有一个包含坐标和值(z)的数据框,如: 导致:如何在Pandas/Python中将(x,y,k)转换为k矩阵,其中x为行,y为列?,python,python-3.x,pandas,Python,Python 3.x,Pandas,根据标题,我有一个包含坐标和值(z)的数据框,如: 导致: x y k 0 0 0 0 1 0 1 0 2 0 2 0 3 1 0 0 4 1 1 1 5 1 2 2 6 2 0 0 7 2 1 2 8 2 2 4 我想获得: 0 1 2 0 0 0 0 1 0 1 2 2 0 2 4 (其中,x值现在是行,y值现在是列) 对熊猫来说,什么是最具蟒蛇风格的方式 这类似于从稀疏矩阵获得矩阵的密集表示。
x y k
0 0 0 0
1 0 1 0
2 0 2 0
3 1 0 0
4 1 1 1
5 1 2 2
6 2 0 0
7 2 1 2
8 2 2 4
我想获得:
0 1 2
0 0 0 0
1 0 1 2
2 0 2 4
(其中,x
值现在是行,y
值现在是列)
对熊猫来说,什么是最具蟒蛇风格的方式
这类似于从稀疏矩阵获得矩阵的密集表示。
注意:x
和y
值可以是任何值(不一定是恰好映射到索引的整数)
p、 我知道我可以做两个手动循环,但这正是我试图避免的。您可以使用:
为了匹配所需的输出,您可以使用:
pd.DataFrame(df.pivot(index='x', columns='y', values='k').values)
0 1 2
0 0 0 0
1 0 1 2
2 0 2 4
这绝对是重复的,我只是不知道这被称为
pivot
df.pivot(index='x', columns='y', values='k')
y 0 1 2
x
0 0 0 0
1 0 1 2
2 0 2 4
pd.DataFrame(df.pivot(index='x', columns='y', values='k').values)
0 1 2
0 0 0 0
1 0 1 2
2 0 2 4