我有一个熊猫数据帧,我想一列级添加到拆分特定列(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()
职能可以做到这一点,但不能弄清楚如何做。
IIUC,使用DataFrame.set_index
和unstack
,并reset_index
指定col_level
参数:
df.set_index(['participant', 'param']).unstack('param').reset_index(col_level=0)
[出]
participant metric_a metric_b metric_c
param 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 NaN 0,653 NaN 0,189 NaN
4 heidi NaN 0,823 NaN 0,524 NaN 0,430
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句