Intellipaat Back

Explore Courses Blog Tutorials Interview Questions
0 votes
3 views
in Data Science by (17.6k points)

What is the best way to do a groupby on a Pandas dataframe, but exclude some columns from that groupby? e.g. I have the following dataframe:

Code   Country      Item_Code   Item    Ele_Code    Unit    Y1961    Y1962   Y1963

2      Afghanistan  15          Wheat   5312        Ha      10       20      30

2      Afghanistan  25          Maize   5312        Ha      10       20      30

4      Angola       15          Wheat   7312        Ha      30       40      50

4      Angola       25          Maize   7312        Ha      30       40      50

I want to groupby the column Country and Item_Code and only compute the sum of the rows falling under the columns Y1961, Y1962 and Y1963. The resulting dataframe should look like this:

Code   Country      Item_Code   Item    Ele_Code    Unit    Y1961    Y1962   Y1963

2      Afghanistan  15          C3      5312        Ha      20       40       60

4      Angola       25          C4      7312        Ha      60       80      100

Right now I am doing this:

df.groupby('Country').sum()

However this adds up the values in the Item_Code column as well. Is there any way I can specify which columns to include in the sum() operation and which ones to exclude?

1 Answer

0 votes
by (41.4k points)

Select the columns using groupby:

In [11]: df.groupby(['Country', 'Item_Code'])[["Y1961", "Y1962", "Y1963"]].sum()

Out[11]:

                              Y1961      Y1962    Y1963

Country      Item_Code

Afghanistan    15              10        20        30

               25              10        20        30

Angola         15              30        40        50

               25              30        40        50

Related questions

31k questions

32.8k answers

501 comments

693 users

Browse Categories

...