From 27fafee2f35085aa2c154b7c3a1e1657f03d1539 Mon Sep 17 00:00:00 2001 From: RI-Jeyaprathap Date: Thu, 25 Sep 2025 15:20:56 +0530 Subject: [PATCH 1/2] Ignore virtual environment --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index d951f3fb9cbad..f0a9aa6f390df 100644 --- a/.gitignore +++ b/.gitignore @@ -141,3 +141,4 @@ doc/source/savefig/ # Pyodide/WASM related files # ############################## /.pyodide-xbuildenv-* +venv/ From a1c9dad6d3b8892ce54cf6492808df5b4efc2a8f Mon Sep 17 00:00:00 2001 From: RI-Jeyaprathap Date: Thu, 25 Sep 2025 15:21:51 +0530 Subject: [PATCH 2/2] BUG: DataFrame.aggregate returns Series for empty DataFrame with single function --- .gitignore | 2 +- pandas/core/frame.py | 7 +++++++ pandas/tests/frame/methods/test_aggregate.py | 12 ++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 pandas/tests/frame/methods/test_aggregate.py diff --git a/.gitignore b/.gitignore index f0a9aa6f390df..2ddd0b1403069 100644 --- a/.gitignore +++ b/.gitignore @@ -141,4 +141,4 @@ doc/source/savefig/ # Pyodide/WASM related files # ############################## /.pyodide-xbuildenv-* -venv/ +venv/ diff --git a/pandas/core/frame.py b/pandas/core/frame.py index 91f5cd1679a61..22f77e3cca136 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -10503,6 +10503,13 @@ def aggregate(self, func=None, axis: Axis = 0, *args, **kwargs): from pandas.core.apply import frame_apply axis = self._get_axis_number(axis) + if self.empty and callable(func): + if axis == 1: + return Series([None] * len(self.index), index=self.index, dtype=object) + else: + return Series( + [None] * len(self.columns), index=self.columns, dtype=object + ) op = frame_apply(self, func=func, axis=axis, args=args, kwargs=kwargs) result = op.agg() diff --git a/pandas/tests/frame/methods/test_aggregate.py b/pandas/tests/frame/methods/test_aggregate.py new file mode 100644 index 0000000000000..95a01dd102cf6 --- /dev/null +++ b/pandas/tests/frame/methods/test_aggregate.py @@ -0,0 +1,12 @@ +import pandas as pd +import pandas._testing as tm + + +def test_aggregate_empty_dataframe_returns_series(): + df = pd.DataFrame({"A": [], "B": []}) + result_row = df.aggregate(".".join, axis="columns") + expected_row = pd.Series([None] * len(df.index), index=df.index, dtype=object) + tm.assert_series_equal(result_row, expected_row) + result_col = df.aggregate(".".join, axis="index") + expected_col = pd.Series([None] * len(df.columns), index=df.columns, dtype=object) + tm.assert_series_equal(result_col, expected_col)