Minimum & Maximum by Group in Python – DataFrame Subgroups (2 Examples)

This tutorial demonstrates how to find maxima and minima by group in the Python programming language.

Preparing the Examples

import pandas as pd                               # Import pandas library in Python
my_df = pd.DataFrame({'A':range(19, 28),          # Constructing a pandas DataFrame
                      'B':[6, 7, 3, 9, 1, 3, 8, 8, 9],
                      'C':range(20, 11, - 1),
                      'GRP_a':['gr1', 'gr1', 'gr2', 'gr3', 'gr1', 'gr2', 'gr2', 'gr3', 'gr3'],
                      'GRP_b':['a', 'b', 'c', 'c', 'a', 'b', 'b', 'a', 'a']})
print(my_df)
#     A  B   C GRP_a GRP_b
# 0  19  6  20   gr1     a
# 1  20  7  19   gr1     b
# 2  21  3  18   gr2     c
# 3  22  9  17   gr3     c
# 4  23  1  16   gr1     a
# 5  24  3  15   gr2     b
# 6  25  8  14   gr2     b
# 7  26  8  13   gr3     a
# 8  27  9  12   gr3     a

Example 1: Calculating Minimum & Maximum by Group in Python

print(my_df.groupby('GRP_a').min())               # Computing the column min by group
#         A  B   C GRP_b
# GRP_a                 
# gr1    19  1  16     a
# gr2    21  3  14     b
# gr3    22  8  12     a
print(my_df.groupby('GRP_a').max())               # Computing the column max by group
#         A  B   C GRP_b
# GRP_a                 
# gr1    23  7  20     b
# gr2    25  8  18     c
# gr3    27  9  17     c

Example 2: Calculating Maximum by Group & Subgroup in Python

print(my_df.groupby(['GRP_a', 'GRP_b']).min())    # Computing the column min by multiple groups
#               A  B   C
# GRP_a GRP_b           
# gr1   a      19  1  16
#       b      20  7  19
# gr2   b      24  3  14
#       c      21  3  18
# gr3   a      26  8  12
#       c      22  9  17
print(my_df.groupby(['GRP_a', 'GRP_b']).max())    # Computing the column max by multiple groups
#               A  B   C
# GRP_a GRP_b           
# gr1   a      23  6  20
#       b      20  7  19
# gr2   b      25  8  15
#       c      21  3  18
# gr3   a      27  9  13
#       c      22  9  17

Leave a Reply

Your email address will not be published. Required fields are marked *

Fill out this field
Fill out this field
Please enter a valid email address.
You need to agree with the terms to proceed

Menu
Top