Skip to content

Commit a1c9dad

Browse files
BUG: DataFrame.aggregate returns Series for empty DataFrame with single function
1 parent 27fafee commit a1c9dad

File tree

3 files changed

+20
-1
lines changed

3 files changed

+20
-1
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,4 +141,4 @@ doc/source/savefig/
141141
# Pyodide/WASM related files #
142142
##############################
143143
/.pyodide-xbuildenv-*
144-
venv/
144+
venv/

pandas/core/frame.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10503,6 +10503,13 @@ def aggregate(self, func=None, axis: Axis = 0, *args, **kwargs):
1050310503
from pandas.core.apply import frame_apply
1050410504

1050510505
axis = self._get_axis_number(axis)
10506+
if self.empty and callable(func):
10507+
if axis == 1:
10508+
return Series([None] * len(self.index), index=self.index, dtype=object)
10509+
else:
10510+
return Series(
10511+
[None] * len(self.columns), index=self.columns, dtype=object
10512+
)
1050610513

1050710514
op = frame_apply(self, func=func, axis=axis, args=args, kwargs=kwargs)
1050810515
result = op.agg()
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import pandas as pd
2+
import pandas._testing as tm
3+
4+
5+
def test_aggregate_empty_dataframe_returns_series():
6+
df = pd.DataFrame({"A": [], "B": []})
7+
result_row = df.aggregate(".".join, axis="columns")
8+
expected_row = pd.Series([None] * len(df.index), index=df.index, dtype=object)
9+
tm.assert_series_equal(result_row, expected_row)
10+
result_col = df.aggregate(".".join, axis="index")
11+
expected_col = pd.Series([None] * len(df.columns), index=df.columns, dtype=object)
12+
tm.assert_series_equal(result_col, expected_col)

0 commit comments

Comments
 (0)