Skip to main content
 首页 » 编程设计

python之如何将行转换为 Pandas Dataframe 中的列

2025年05月04日19powertoolsteam

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

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 
 

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

请帮忙。

谢谢

请您参考如下方法:

如果想要聚合值,例如每组按总和:

df1 = df.groupby('Group').sum().T.rename_axis(None, axis=1).rename_axis('Group').reset_index() 
print (df1) 
  Group    A    E 
0    x1  0.0  0.0 
1    x2  0.0  0.0 
2    x3  0.0  0.0 
3    x4  0.0  0.0 
4    x5  0.0  0.0 
5    x6  0.0  0.0 
6    x7  0.0  0.0 
7    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    A 
0    x1  0.0  0.0  0.0  0.0  0.0 
1    x2  0.0  0.0  0.0  0.0  0.0 
2    x3  0.0  0.0  0.0  0.0  0.0 
3    x4  0.0  0.0  0.0  0.0  0.0 
4    x5  0.0  0.0  0.0  0.0  0.0 
5    x6  0.0  0.0  0.0  0.0  0.0 
6    x7  0.0  0.0  0.0  0.0  0.0 
7    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    E 
0     x1   1.0  0.0 
1     x2   0.0  0.0 
2     x3   0.0  0.0 
3     x1   0.0  0.0 
4     x2   0.0  0.0 
5     x3   0.0  0.0 
6     x1   0.0  0.0 
7     x2   3.0  0.0 
8     x3  11.0  0.0 
9     x1   0.0  0.0 
10    x2   0.0  0.0 
11    x3   0.0  6.0 
12    x1   0.0  0.0 
13    x2   1.0  0.0 
14    x3   0.0  0.0