熊猫-更改数据框的形状

时间:2019-04-24 15:10:27

标签: python pandas

这是我的数据框:

df = pd.DataFrame({'level': ['ma', 'ma', 'phd', 'phd'], 'measure': ['x', 'y', 'x', 'y'], 'result_1': [1, 2, 3, 4], 'result_2': [50, 60, 70, 80]})

我想将df的形状更改为此:

           level    x     y
result_1      ma    1     2
             phd    3     4

result_2      ma    50    60
             phd    70    80

我不知道所需结果的正确代码,所以我只是发布了所需的输出。

2 个答案:

答案 0 :(得分:4)

这是stackunstack + swaplevel的一种方式

df.set_index(['measure','level']).stack().unstack(0).swaplevel(0,1).sort_index(level=0)
Out[256]: 
measure          x   y
         level        
result_1 ma      1   2
         phd     3   4
result_2 ma     50  60
         phd    70  80

答案 1 :(得分:4)

让我们先尝试getSurname然后set_index level = 0嵌套在列标题下,然后unstack进行转置:

T

输出:

df.set_index(['level','measure']).unstack(0).T
#To @Alexander point in the comments, alternative for readability.
#df.set_index(['level','measure']).unstack(level=0).T