透视子数据帧

时间:2017-01-26 22:54:41

标签: python pandas

假设我们有一个类似以下6列的数据框

C1 C2 C3   A  B  C
 x  y  z  10  5  1
 r  s  t   0  0  0 
 u  v  z   1  0  0 

我希望转换它以获得以下结果:

C1 C2 C3  P   V 
 x  y  z  A  10 
 x  y  z  B   5
 x  y  z  C   1
 u  v  z  A   1

我认为可以使数据框转动以获得此结果,但我很难完成此操作。如何使用pivot_tablepivot来完成此转换?

1 个答案:

答案 0 :(得分:3)

使用melt + query

pd.melt(df, 'C1 C2 C3'.split(), list('ABC'), 'P', 'V').query('V != 0')

  C1 C2 C3  P   V
0  x  y  z  A  10
2  u  v  z  A   1
3  x  y  z  B   5
6  x  y  z  C   1