Python Pandas重组数据框架

时间:2017-08-17 10:40:51

标签: python python-2.7 pandas dataframe

我有以下数据框:

Type  Label_1  Label_2  Label_3
A       1        5        3
B       3        2        1
C       2        1        2

我想将其格式化为:

Type  Label_type  Value
 A      Label_1    1
 A      Label_2    5
 A      Label_3    3
 B      Label_1    2
 B      Label_2    1

我怎样才能以最有效的方式做到这一点?我没有这样做......

2 个答案:

答案 0 :(得分:4)

我们可以使用pd.melt方法:

In [87]: pd.melt(df, 'Type')
Out[87]:
  Type variable  value
0    A  Label_1      1
1    B  Label_1      3
2    C  Label_1      2
3    A  Label_2      5
4    B  Label_2      2
5    C  Label_2      1
6    A  Label_3      3
7    B  Label_3      1
8    C  Label_3      2

如果订单很重要:

In [89]: pd.melt(df, 'Type').sort_values(['Type', 'variable'])
Out[89]:
  Type variable  value
0    A  Label_1      1
3    A  Label_2      5
6    A  Label_3      3
1    B  Label_1      3
4    B  Label_2      2
7    B  Label_3      1
2    C  Label_1      2
5    C  Label_2      1
8    C  Label_3      2

答案 1 :(得分:2)

使用stack

df=df.set_index('Type').stack().rename_axis(('Type','Label_type')).reset_index(name='Value')
print (df)
  Type Label_type  Value
0    A    Label_1      1
1    A    Label_2      5
2    A    Label_3      3
3    B    Label_1      3
4    B    Label_2      2
5    B    Label_3      1
6    C    Label_1      2
7    C    Label_2      1
8    C    Label_3      2