熊猫-使用pivot_table将1列中的每个唯一元素转换为唯一列

时间:2019-09-18 22:47:19

标签: pandas pivot-table

我正在尝试扩展一个数据框,以便对于一列的行中的所有唯一元素,每个值本身都变成一列。

我从一个看起来像这样的数据帧开始。

     Colour Age    Type  Count
0    Black  11yrs  Cats  22
1    Black  12yrs  Cats  2
2    White  8yrs   Dogs  10
3    Brown  11yrs  Dogs  2
4    White  12yrs  Cats  14

我想更改数据框,以使列成为颜色列(黑色,白色,棕色)的唯一元素-使其看起来像这样:

    Age    Type   Black  White Brown 
0   11yrs  Cats   22     0     0   
1   12yrs  Cats   2      14     0
2   8yrs  Dogs    0      10    0
3   11yrs  Dogs   0      0     2

我已经tried了一些方法,但显然我缺少了一些东西。

任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

您可以按以下方式使用pivot_table

(df.pivot_table(index=['Age', 'Type'], 
                columns='Colour', 
                values='Count', 
                fill_value=0).reset_index())

Out[22]:
Colour    Age  Type  Black  Brown  White
0       11yrs  Cats     22      0      0
1       11yrs  Dogs      0      2      0
2       12yrs  Cats      2      0     14
3        8yrs  Dogs      0      0     10

或者set_indexunstack

(df.set_index(['Age', 'Type', 'Colour']).Count.unstack(fill_value=0)
   .reset_index())

Out[23]:
Colour    Age  Type  Black  Brown  White
0       11yrs  Cats     22      0      0
1       11yrs  Dogs      0      2      0
2       12yrs  Cats      2      0     14
3        8yrs  Dogs      0      0     10