python - 将列值转换为列?

标签 python pandas

我已经看到了一些关于将列/系列分解为 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

我觉得这应该是相对简单的事情,但是随着卷积水平的增加,我已经为此苦苦思考了几个小时,但没有成功。

最佳答案

有几种方法:

使用 .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

关于python - 将列值转换为列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26255671/

相关文章:

python - 如何获取动态创建的方法的名称

python - pandas groupby 时间序列数据根据函数结果

python - pd.Grouper 与日期时间键结合另一个分组键似乎创建了错误的组数

python - 将 Pandas 时区感知 DateTimeIndex 转换为天真的时间戳,但在特定时区

python - MySQL-python 安装无法在 virtualenv 中运行

python - 如何在 Python 中引用/迭代多个列表

python - 将 Pandas DataFrame 中的所有行乘以字典

python - 删除文件第一行的前 32 个字符

Python Pandas 重组数据框

python - Pandas 在第一个 % 符号和第二个字母上拆分列