Reputation: 1087
I have a data frame which is of the format:
level_0 level_1 counts
0 back not_share 1183
1 back share 1154
2 back total 2337
3 front not_share 697
4 front share 1073
5 front total 1770
6 left not_share 4819
7 left share 5097
8 left total 9916
9 other not_share 2649
10 other share 2182
11 other total 4831
12 right not_share 1449
13 right share 1744
14 right total 3193
I want to convert this form to
level_0 share not_share total
back 1154 1183 2337
front 1073 697 1770
and so on..
Is there any method that I can use or should I convert it into a native Python datatype and then do the manipulations?
Upvotes: 3
Views: 215
Reputation: 294488
Use groupby
and sum
df.groupby(['level_0', 'level_1']).counts.sum().unstack()
Upvotes: 4
Reputation: 210882
you can use pivot_table() method:
In [101]: df.pivot_table(index='level_0', columns='level_1', values='counts', aggfunc='sum')
Out[101]:
level_1 not_share share total
level_0
back 1183 1154 2337
front 697 1073 1770
left 4819 5097 9916
other 2649 2182 4831
right 1449 1744 3193
Upvotes: 3