我想重塑我的数据框,以特定的方式将行排成列。看起来像这样:
cid id gr 1N 2A 3G 4S 5M eg
0 1 x 2 3.0 3.0 3.0 2.0 2.0 D
1 1 x 5 3.0 3.0 2.0 2.0 3.0 D
2 1 x 6 3.0 2.0 1.0 3.0 1.0 D
3 1 y 5 1.0 1.0 1.0 1.0 1.0 E
4 1 y 6 3.0 2.0 1.0 3.0 1.0 E
我尝试了以下代码:
s = df.groupby(["cid", "id", "eg"]).cumcount()
df1 = df.set_index(["cid", "id", "eg",s]).unstack().sort_index()
df1.columns = [f"{x}{y}" for x, y in df1.columns]
得到结果:
cid id eg gr0 gr1 gr2 gr3 gr4 gr5 1N0 1N1 1N2 1N3 1N4 1N5 2A0 ...
1 x D 2 5 6 NaN NaN NaN 3 3 3 NaN NaN NaN 3
y E 5 6 NaN NaN NaN NaN 1 3 NaN NaN NaN NaN 1
“ gr”列的值介于1到6之间。所以我希望我的DF像这样:
cid id eg gr0 gr1 gr2 gr3 gr4 gr5 1N0 1N1 1N2 1N3 1N4 1N5 2A0 ...
1 x D Nan 2 NaN NaN 5 6 NaN 3 NaN NaN 3 3 NaN
y E NaN NaN NaN NaN 5 6 NaN NaN NaN NaN 1 3 NaN
有可能吗?