如何在 Pandas Dataframe 中将行转换为列

我有一个格式如下的数据框:


DF1:原始数据框的形状为 (1200, 9)


这是示例数据框


    x1      x2      x3     Group


    1.0     0.0     0.0     A

    0.0     0.0     0.0     A

    0.0     3.0     11.0    A

    0.0     0.0     0.0     A

    0.0     1.0     0.0     A

    0.0     0.0     0.0     E

    0.0     0.0     0.0     E

    0.0     0.0     0.0     E

    0.0     0.0     6.0     E

    0.0     0.0     0.0     E


我想要以下格式的输出:


DF_Res:


Group    A    E

   x1  1.0  0.0

   x2  0.0  0.0

   x3  0.0  0.0


   x1  0.0  0.0

   x2  0.0  0.0

   x3  0.0  0.0


   x1  0.0  0.0

   x2  3.0  0.0

   x3  11.0  0.0


   x1  0.0  0.0

   x2  0.0  0.0

   x3  0.0  6.0


   x1  0.0  0.0

   x2  1.0  0.0

   x3  0.0  0.0


我想转换我的列,使它们成为组,组成为列标题。


UYOU
浏览 214回答 2
2回答

有只小跳蛙

如果想要聚合值,例如按sum组:df1 = df.groupby('Group').sum().T.rename_axis(None, axis=1).rename_axis('Group').reset_index()print (df1)  Group    A    E0    x1  0.0  0.01    x2  0.0  0.02    x3  0.0  0.03    x4  0.0  0.04    x5  0.0  0.05    x6  0.0  0.06    x7  0.0  0.07    x8  0.0  0.0编辑:df2 = df.set_index('Group').T.rename_axis(None, axis=1).rename_axis('Group').reset_index()print (df2)  Group    A    A    E    E    A0    x1  0.0  0.0  0.0  0.0  0.01    x2  0.0  0.0  0.0  0.0  0.02    x3  0.0  0.0  0.0  0.0  0.03    x4  0.0  0.0  0.0  0.0  0.04    x5  0.0  0.0  0.0  0.0  0.05    x6  0.0  0.0  0.0  0.0  0.06    x7  0.0  0.0  0.0  0.0  0.07    x8  0.0  0.0  0.0  0.0  0.0编辑1:df = (df.set_index('Group')        .groupby(level=0)        .apply(lambda x: x.stack().reset_index(level=0, drop=True))        .rename_axis(None)        .rename_axis('Group', axis=1)        .T        .reset_index())print (df)   Group     A    E0     x1   1.0  0.01     x2   0.0  0.02     x3   0.0  0.03     x1   0.0  0.04     x2   0.0  0.05     x3   0.0  0.06     x1   0.0  0.07     x2   3.0  0.08     x3  11.0  0.09     x1   0.0  0.010    x2   0.0  0.011    x3   0.0  6.012    x1   0.0  0.013    x2   1.0  0.014    x3   0.0  0.0

暮色呼如

这有点“hacky”,但您需要创建一个单独的索引来区分您的值。例如,多个值对应于A和x1。这就是我所说的:df_new = df.set_index('Group')df_new = df_new.groupby(df_new.index, as_index=False).apply(lambda x: x.stack().reset_index())df_new.columns = ['Group', 'x', 'value']df_new = df_new.droplevel(axis=0, level=0).set_index(['Group', 'x'], append=True).unstack('Group').droplevel(axis=1, level=0)结果:Group     A    Ex               x1      1.0  0.0x2      0.0  0.0x3      0.0  0.0x1      0.0  0.0x2      0.0  0.0x3      0.0  0.0x1      0.0  0.0x2      3.0  0.0x3     11.0  0.0x1      0.0  0.0x2      0.0  0.0x3      0.0  6.0x1      0.0  0.0x2      1.0  0.0x3      0.0  0.0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python