熊猫通过基于另一列的值添加列级别来重塑数据框

史提芬

我有一个熊猫数据帧,我想一列级添加到拆分特定列(metric_ametric_bmetric_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()职能可以做到这一点,但不能弄清楚如何做。

克里斯·A

IIUC,使用DataFrame.set_indexunstack,并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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

基于熊猫数据框中的另一列重塑一列

根据熊猫中数据框的另一列的值添加一列

基于另一列熊猫数据框迭代列值匹配值

熊猫基于另一列的dict值添加列

基于另一列减去某个熊猫数据框列的最小值

过滤基于另一列的熊猫数据框

根据另一列中的值将值添加到熊猫数据框的一列中

通过添加另一列来对我的熊猫数据框中的重复项进行排序

通过根据列值熊猫数据框将一列置于另一列之下,将多列合并为一列

在熊猫的一列上重塑数据框

熊猫:返回数据框,其中一列的值大于另一列的值

使用另一列内的列名重塑数据框

如何调节一列的循环以填充熊猫数据框中的另一列值

如何通过列值重塑熊猫数据框?

是否想通过比较熊猫数据框中的另一列来在新列中分配值?

熊猫基于拆分另一列添加新列

将列添加到基于 R 中的字符列表对另一列中的值求和的数据框

从熊猫数据框中基于另一列的列的每个列表中删除元素

如何添加基于熊猫中另一列的值的新列

根据数据框中另一列的值添加一列

根据另一列中的相同值组合熊猫数据框列中的文本值

根据与熊猫数据框的另一列值的部分匹配获取多列值

使用熊猫基于另一个数据框向数据框添加列

基于另一数据框列从一列中减去值

数据框,使用基于另一列索引的值创建一个新列

根据熊猫数据框中另一列的最后一个值填充列

基于另一列合并熊猫数据框中的间隔

在条件基于另一列的情况下从熊猫数据框中删除重复项

如何根据另一列中满足的条件在熊猫数据框中添加新列?