Sreejith Menon
Sreejith Menon

Reputation: 1087

pandas - Changing the format of a data frame

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

Answers (2)

piRSquared
piRSquared

Reputation: 294488

Use groupby and sum

df.groupby(['level_0', 'level_1']).counts.sum().unstack()

enter image description here

Upvotes: 4

MaxU - stand with Ukraine
MaxU - stand with Ukraine

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

Related Questions