Python 沿一列将数据帧从长改宽

Python 沿一列将数据帧从长改宽,python,python-3.x,pandas,Python,Python 3.x,Pandas,我正在寻找一种将下面的表a重新配置为表B的方法 表A: type x1 x2 x3 A 4 6 9 A 7 4 1 A 9 6 2 B 1 3 8 B 2 7 9 转化为表B: type x1 x2 x3 x1' x2' x3' x1'' x2'' x3'' A 4 6 9 7 4 1 9 6 2 B

我正在寻找一种将下面的表a重新配置为表B的方法

表A:

type   x1  x2  x3  
A      4   6   9  
A      7   4   1  
A      9   6   2   
B      1   3   8  
B      2   7   9
转化为表B:

type   x1  x2  x3  x1'  x2'  x3'  x1'' x2'' x3''  
A      4    6   9   7    4   1    9     6   2  
B      1    3   8   2    7   9   NA     NA  NA

真正的表A超过150000行36列。有2100个唯一的“类型”值。

您可以适当地设置索引,然后
取消堆叠

df

  type  x1  x2  x3
0    A   4   6   9
1    A   7   4   1
2    A   9   6   2
3    B   1   3   8
4    B   2   7   9

res = (df.set_index(['type', df.groupby('type').cumcount()])
         .unstack()
         .sort_index(level=-1, axis=1))

res.columns = res.columns.map(lambda x: x[0] + "'" * int(x[1]))    
res
       x1   x2   x3  x1'  x2'  x3'  x1''  x2''  x3''
type                                                
A     4.0  6.0  9.0  7.0  4.0  1.0   9.0   6.0   2.0
B     1.0  3.0  8.0  2.0  7.0  9.0   NaN   NaN   NaN

是的,使用熊猫。有没有办法确保“type”是数据帧中的第一列?@SDM1212
res=res.reset\u index()