我正在尝试扩展一个数据框,以便对于一列的行中的所有唯一元素,每个值本身都变成一列。
我从一个看起来像这样的数据帧开始。
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了一些方法,但显然我缺少了一些东西。
任何帮助表示赞赏。
答案 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_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