要排在 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
我们有相当于 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