Панды - используйте pivot_table для преобразования каждого уникального элемента в 1 столбце в уникальный столбец - PullRequest
1 голос
/ 19 сентября 2019

Я пытаюсь развернуть фрейм данных таким образом, чтобы для всех уникальных элементов в строках одного столбца каждое значение становилось отдельным столбцом.

Я начинаю с фрейма данных, который выглядит следующим образом.

     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

Я бы хотел изменить фрейм данных таким образом, чтобы столбцы представляли собой уникальные элементы столбца Color, Black, White, Brown - чтобы он выглядел следующим образом:

    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

Я попробовал несколько подходов, но явно что-то упустил.

Любая помощь приветствуется.

1 Ответ

2 голосов
/ 19 сентября 2019

Вы можете использовать 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_index и unstack

(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
...