熊猫列值到列?

发布于 2021-01-29 18:18:22

我已经看到了将一个列/系列分解为Pandas数据框的多个列的主题的几种变体,但是我一直在尝试做点事情,而实际上并没有成功地使用现有方法。

给定这样的一个DataFrame:

    key       val
id
2   foo   oranges
2   bar   bananas
2   baz    apples
3   foo    grapes
3   bar     kiwis

我想将key系列中的项目转换为以val值作为值的列,如下所示:

        foo        bar        baz
id
2   oranges    bananas     apples
3    grapes      kiwis        NaN

我觉得这应该是相对简单的事情,但是由于卷积水平的提高,我已经为此花了几个小时不停地努力,但没有成功。

关注者
0
被浏览
52
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    有几种方法:

    使用.pivot_table

    >>> df.pivot_table(values='val', index=df.index, columns='key', aggfunc='first')
    key      bar     baz      foo
    id                           
    2    bananas  apples  oranges
    3      kiwis     NaN   grapes
    

    使用.pivot

    >>> df.pivot(index=df.index, columns='key')['val']
    key      bar     baz      foo
    id                           
    2    bananas  apples  oranges
    3      kiwis     NaN   grapes
    

    使用.groupby后跟.unstack

    >>> df.reset_index().groupby(['id', 'key'])['val'].aggregate('first').unstack()
    key      bar     baz      foo
    id                           
    2    bananas  apples  oranges
    3      kiwis     NaN   grapes
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看