Skip to content

Commit 4185fcc

Browse files
committed
BUG: Error upon Series.Groupby.nunique with empty Series (pandas-dev#12553)
Modified tests
1 parent 52241a7 commit 4185fcc

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

pandas/core/groupby.py

+4
Original file line numberDiff line numberDiff line change
@@ -2898,6 +2898,10 @@ def true_and_notnull(x, *args, **kwargs):
28982898
def nunique(self, dropna=True):
28992899
""" Returns number of unique elements in the group """
29002900
ids, _, _ = self.grouper.group_info
2901+
2902+
if len(ids) == 0:
2903+
return Series(index=self.dtype.index, name=self.name)
2904+
29012905
val = self.obj.get_values()
29022906

29032907
try:

pandas/tests/test_groupby.py

+11
Original file line numberDiff line numberDiff line change
@@ -6754,6 +6754,17 @@ def test_nunique_with_object(self):
67546754
expected = pd.Series([1] * 5, name='name', index=index)
67556755
tm.assert_series_equal(result, expected)
67566756

6757+
def test_nunique_with_empty_series(self):
6758+
# GH 12553
6759+
empty_idxs = [pd.Index([]), pd.Int64Index([]), pd.CategoricalIndex([])
6760+
pd.DatetimeIndex([]), pd.TimedeltaIndex([]),
6761+
pd.PeriodIndex([], freq='1s')]
6762+
for empty_idx in empty_idx:
6763+
data = pd.Series(index=empty_idx, name='name')
6764+
result = data.groupby(level=0).nunique()
6765+
expected = pd.Series(index=empty_idx, name='name')
6766+
tm.assert_series_equal(result, expected)
6767+
67576768
def test_transform_with_non_scalar_group(self):
67586769
# GH 10165
67596770
cols = pd.MultiIndex.from_tuples([

0 commit comments

Comments
 (0)