【发布时间】:2019-09-14 21:35:55
【问题描述】:
我有一个 pandas 数据框,我想添加一个列级别以根据另一个列的值将特定列(metric_a、metric_b、metric_c)拆分为几个子列列 (parameter)。
当前数据格式:
participant param metric_a metric_b metric_c
0 alice a 0,700 0,912 0,341
1 alice b 0,736 0,230 0,370
2 bob a 0,886 0,364 0,995
3 bob b 0,510 0,704 0,990
4 charlie a 0,173 0,462 0,709
5 charlie b 0,085 0,950 0,807
6 david a 0,676 0,653 0,189
7 david b 0,823 0,524 0,430
想要的数据格式:
participant metric_a metric_b metric_c
a b a b a b
0 alice 0,700 0,736 0,912 0,230 0,341 0,370
1 bob 0,886 0,510 0,364 0,704 0,995 0,990
2 charlie 0,173 0,085 0,462 0,950 0,709 0,807
3 david 0,676 0,823 0,653 0,524 0,189 0,430
我试过了
df.set_index(['participant', 'param']).unstack(['param'])
这给了我一个接近的结果,但我不满意,因为我想保留一个单级索引和 participant 一个常规列。
metric_a metric_b metric_c
param a b a b a b
participant
alice 0,700 0,736 0,912 0,230 0,341 0,370
bob 0,886 0,510 0,364 0,704 0,995 0,990
charlie 0,173 0,085 0,462 0,950 0,709 0,807
david 0,676 0,823 0,653 0,524 0,189 0,430
我的直觉是 groupby() 或 pivot_table() 函数可以完成这项工作,但不知道如何。
【问题讨论】:
标签: python pandas multi-level