要排在 python 中的列

Columns to row in python

我们有相当于 proc 转置的 sas 吗?我有以下变量

 a b c d e f g
 1 3 4 5 3 2 2
 2 3 3 3 2 4 2

我想跨列 a 和 b 转置,虚拟输出如下:

 a b tranposed_columns transposed_value
 1 3 c                 4
 1 3 d                 5
 1 3 e                 3
 1 3 f                 2
 1 3 g                 2
 2 3 c                 3
 2 3 d                 3
 2 3 e                 2
 2 3 f                 4
 2 3 g                 2

我如何在 python 中执行此操作,在 sas 中我会写

 proc transpose data=Dummy_data 
 out=ouput_data (rename=(col1=transposed_value _name_=tranposed_columns));
 by a b;
 run;

我试过 dummy_data.T ,但它转置了所有数据,也尝试了数据透视数据,但它没有重复行。

dummy_data.pivot_table(index=['a','b'],values=['c','d','e','f','g'], aggfunc='sum', fill_value=0)

使用pd.melt将多列合并为一列。使用id_vars参数来"protect"某些列不参与熔化:

In [11]: pd.melt(df, id_vars=['a','b'], var_name='transposed_columns', value_name='transposed_value')
Out[11]: 
   a  b transposed_columns  transposed_value
0  1  3                  c                 4
1  2  3                  c                 3
2  1  3                  d                 5
3  2  3                  d                 3
4  1  3                  e                 3
5  2  3                  e                 2
6  1  3                  f                 2
7  2  3                  f                 4
8  1  3                  g                 2
9  2  3                  g                 2