这是我的数据框:
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
我不知道所需结果的正确代码,所以我只是发布了所需的输出。
答案 0 :(得分:4)
这是stack
和unstack
+ 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