在Python中转换数据帧

在Python中转换数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,考虑到以下数据帧: import pandas as pd import numpy as np import random np.random.seed(10) df1 = pd.DataFrame({'x':[1,2,3,4,5,1,2,3,4,5], 'y':[10,10,10,10,10,20,20,20,20,20], 'z':np.random.normal(size = 10) }) 我想将x值

考虑到以下数据帧:

import pandas as pd
import numpy as np
import random
np.random.seed(10)

df1 = pd.DataFrame({'x':[1,2,3,4,5,1,2,3,4,5],
              'y':[10,10,10,10,10,20,20,20,20,20],
              'z':np.random.normal(size = 10)
              })
我想将
x
值转换为列,将
y
值转换为索引(递减),并在数据框中使用相应的z值。类似于df2:

df2 = pd.DataFrame(np.random.randn(2,5), index = [20,10], columns=[1,2,3,4,5])

如何将
df1
转换为
df2
的样式?

您可以使用
熊猫。透视表

res = df1.pivot_table(index='y', columns='x', values='z')
您可能希望删除或更改索引名,但这是您的结果:

x          1         2         3         4         5
y                                                   
10  1.331587  0.715279 -1.545400 -0.008384  0.621336
20 -0.720086  0.265512  0.108549  0.004291 -0.174600

我可以将索引减少到y吗?在这种情况下,从第一排的20到第二排的10。@YQ.Wang,我相信这是可能的。您可以查看如何对熊猫中的索引进行排序。类似于
.sort\u index(升序=False)
的方法可能会起作用。