Skip to content

Commit 2933062

Browse files
committed
BUG: enable cythonized groupers to work on boolean columns, GH #315
1 parent debbb2d commit 2933062

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

pandas/core/groupby.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ def _cython_agg_general(self, how):
333333
output = {}
334334
cannot_agg = []
335335
for name, obj in self._iterate_slices():
336-
if issubclass(obj.dtype.type, np.number):
336+
if issubclass(obj.dtype.type, (np.number, np.bool_)):
337337
if obj.dtype != np.float64:
338338
obj = obj.astype('f8')
339339
else:

pandas/tests/test_groupby.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -659,6 +659,15 @@ def _testit(op):
659659
_testit(lambda x: x.sum())
660660
_testit(lambda x: x.mean())
661661

662+
663+
def test_cython_agg_boolean(self):
664+
frame = DataFrame({'a': np.random.randint(0, 5, 50),
665+
'b': np.random.randint(0, 2, 50).astype('bool')})
666+
result = frame.groupby('a')['b'].mean()
667+
expected = frame.groupby('a')['b'].agg(np.mean)
668+
669+
assert_series_equal(result, expected)
670+
662671
def test_grouping_attrs(self):
663672
deleveled = self.mframe.delevel()
664673
grouped = deleveled.groupby(['first', 'second'])

0 commit comments

Comments
 (0)