多行移位到新列

时间:2019-07-23 09:46:20

标签: python pandas

我想重塑我的数据框,以特定的方式将行排成列。看起来像这样:

   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 

有可能吗?

0 个答案:

没有答案