import pandas as pd
import numpy as np


num_rows = 10
department = np.random.choice(['HR', 'IT', 'Finance','Sales'], num_rows)
department
array(['Sales', 'IT', 'HR', 'HR', 'IT', 'Sales', 'Finance', 'Sales',
       'Finance', 'Sales'], dtype='<U7')
location = np.random.choice(['Bangalore', 'Chennai', 'Hyderabad','Pune'], num_rows)
employee_id = np.random.choice(range(1000, 2000), num_rows)
employee_id
array([1372, 1109, 1981, 1185, 1502, 1073, 1291, 1058, 1648, 1401])
salary = np.random.normal(50000, 10000, num_rows).astype(int)
salary
array([41751, 43223, 49878, 45469, 50338, 53113, 70930, 37430, 53010,
       52789])
df = pd.DataFrame({'department': department, 
                   'employee_id': employee_id, 
                   'salary': salary,
                   'location': location})
df
department employee_id salary location
0 Sales 1372 41751 Pune
1 IT 1109 43223 Chennai
2 HR 1981 49878 Bangalore
3 HR 1185 45469 Chennai
4 IT 1502 50338 Pune
5 Sales 1073 53113 Hyderabad
6 Finance 1291 70930 Chennai
7 Sales 1058 37430 Bangalore
8 Finance 1648 53010 Chennai
9 Sales 1401 52789 Pune
g = df.groupby('department')
g.get_group('HR')
department employee_id salary location
2 HR 1981 49878 Bangalore
3 HR 1185 45469 Chennai
g.get_group('Sales')
department employee_id salary location
0 Sales 1372 41751 Pune
5 Sales 1073 53113 Hyderabad
7 Sales 1058 37430 Bangalore
9 Sales 1401 52789 Pune
g.get_group('IT')
department employee_id salary location
1 IT 1109 43223 Chennai
4 IT 1502 50338 Pune
g.max()
employee_id salary location
department
Finance 1648 70930 Chennai
HR 1981 49878 Chennai
IT 1502 50338 Pune
Sales 1401 53113 Pune
g.max(numeric_only=True)
employee_id salary
department
Finance 1648 70930
HR 1981 49878
IT 1502 50338
Sales 1401 53113
g.max('salary')
employee_id salary
department
Finance 1648 70930
HR 1981 49878
IT 1502 50338
Sales 1401 53113
g['salary'].max()
department
Finance    70930
HR         49878
IT         50338
Sales      53113
Name: salary, dtype: int64
g.max()['salary']
department
Finance    70930
HR         49878
IT         50338
Sales      53113
Name: salary, dtype: int64
g.max?
Signature:
g.max(
    numeric_only: 'bool' = False,
    min_count: 'int' = -1,
    engine: "Literal['cython', 'numba'] | None" = None,
    engine_kwargs: 'dict[str, bool] | None' = None,
)
Docstring:
Compute max of group values.

Parameters
----------
numeric_only : bool, default False
    Include only float, int, boolean columns.

    .. versionchanged:: 2.0.0

        numeric_only no longer accepts ``None``.

min_count : int, default -1
    The required number of valid values to perform the operation. If fewer
    than ``min_count`` non-NA values are present the result will be NA.

engine : str, default None None
    * ``'cython'`` : Runs rolling apply through C-extensions from cython.
    * ``'numba'`` : Runs rolling apply through JIT compiled code from numba.
        Only available when ``raw`` is set to ``True``.
    * ``None`` : Defaults to ``'cython'`` or globally setting ``compute.use_numba``

engine_kwargs : dict, default None None
    * For ``'cython'`` engine, there are no accepted ``engine_kwargs``
    * For ``'numba'`` engine, the engine can accept ``nopython``, ``nogil``
        and ``parallel`` dictionary keys. The values must either be ``True`` or
        ``False``. The default ``engine_kwargs`` for the ``'numba'`` engine is
        ``{'nopython': True, 'nogil': False, 'parallel': False}`` and will be
        applied to both the ``func`` and the ``apply`` groupby aggregation.

Returns
-------
Series or DataFrame
    Computed max of values within each group.

Examples
--------
For SeriesGroupBy:

>>> lst = ['a', 'a', 'b', 'b']
>>> ser = pd.Series([1, 2, 3, 4], index=lst)
>>> ser
a    1
a    2
b    3
b    4
dtype: int64
>>> ser.groupby(level=0).max()
a    2
b    4
dtype: int64

For DataFrameGroupBy:

>>> data = [[1, 8, 2], [1, 2, 5], [2, 5, 8], [2, 6, 9]]
>>> df = pd.DataFrame(data, columns=["a", "b", "c"],
...                   index=["tiger", "leopard", "cheetah", "lion"])
>>> df
          a  b  c
  tiger   1  8  2
leopard   1  2  5
cheetah   2  5  8
   lion   2  6  9
>>> df.groupby("a").max()
    b  c
a
1   8  5
2   6  9
File:      ~/mambaforge/lib/python3.12/site-packages/pandas/core/groupby/groupby.py
Type:      method