Skip to content

Commit 2a82d4d

Browse files
committed
Issue pandas-dev#5452 add default option to get_group
1 parent f08a1e6 commit 2a82d4d

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

pandas/core/groupby/groupby.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -659,7 +659,7 @@ def curried(x):
659659

660660
return wrapper
661661

662-
def get_group(self, name, obj=None):
662+
def get_group(self, name, obj=None, default=None):
663663
"""
664664
Construct DataFrame from group with provided name.
665665
@@ -671,6 +671,9 @@ def get_group(self, name, obj=None):
671671
the DataFrame to take the DataFrame out of. If
672672
it is None, the object groupby was called on will
673673
be used
674+
default : object
675+
the default object in case the group requested is
676+
not found
674677
675678
Returns
676679
-------
@@ -681,6 +684,8 @@ def get_group(self, name, obj=None):
681684

682685
inds = self._get_index(name)
683686
if not len(inds):
687+
if default is not None:
688+
return default
684689
raise KeyError(name)
685690

686691
return obj.take(inds, axis=self.axis)

pandas/tests/groupby/test_groupby.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1948,3 +1948,14 @@ def test_shift_bfill_ffill_tz(tz_naive_fixture, op, expected):
19481948
result = getattr(grouped, op)()
19491949
expected = DataFrame(expected).assign(time=lambda x: x.time.dt.tz_localize(tz))
19501950
assert_frame_equal(result, expected)
1951+
1952+
1953+
def test_get_group_default():
1954+
# Issue: 9299
1955+
data = DataFrame({"ind": [0, 0, 2, 2]})
1956+
gb = data.groupby("ind")
1957+
1958+
result = gb.get_group(1, default=gb.get_group(0))
1959+
expected = gb.get_group(0)
1960+
1961+
assert_frame_equal(result, expected)

0 commit comments

Comments
 (0)