diff --git a/pandas-stubs/core/groupby/generic.pyi b/pandas-stubs/core/groupby/generic.pyi index c4a56f8b0..b1890d522 100644 --- a/pandas-stubs/core/groupby/generic.pyi +++ b/pandas-stubs/core/groupby/generic.pyi @@ -359,3 +359,4 @@ class DataFrameGroupBy(GroupBy): ascending: bool = ..., dropna: bool = ..., ) -> Series[float]: ... + def __getattr__(self, name: str) -> SeriesGroupBy: ... diff --git a/tests/test_frame.py b/tests/test_frame.py index 44b5317cb..a760a679d 100644 --- a/tests/test_frame.py +++ b/tests/test_frame.py @@ -2097,3 +2097,14 @@ def test_groupby_and_transform() -> None: check(assert_type(c2, pd.DataFrame), pd.DataFrame) check(assert_type(c3, pd.Series), pd.Series) check(assert_type(c4, pd.Series), pd.Series) + + +def test_getattr_and_dataframe_groupby() -> None: + df = pd.DataFrame( + data={"col1": [1, 1, 2], "col2": [3, 4, 5], "col3": [0, 1, 0], 0: [-1, -1, -1]} + ) + check(assert_type(df.groupby("col1").col3.agg(min), pd.Series), pd.Series) + check( + assert_type(df.groupby("col1").col3.agg([min, max]), pd.DataFrame), + pd.DataFrame, + )