Python 沿一列将数据帧从长改宽
我正在寻找一种将下面的表a重新配置为表B的方法 表A: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
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()