Skip to content

Commit 079bd88

Browse files
Merge pull request pandas-dev#8840 from jorisvandenbossche/gh5620
TST: add tests for index.groupby (GH5620)
2 parents d5a3509 + 91bd308 commit 079bd88

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

pandas/core/index.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1555,6 +1555,20 @@ def _possibly_promote(self, other):
15551555
return self, other
15561556

15571557
def groupby(self, to_groupby):
1558+
"""
1559+
Group the index labels by a given array of values.
1560+
1561+
Parameters
1562+
----------
1563+
to_groupby : array
1564+
Values used to determine the groups.
1565+
1566+
Returns
1567+
-------
1568+
groups : dict
1569+
{group name -> group labels}
1570+
1571+
"""
15581572
return self._groupby(self.values, _values_from_object(to_groupby))
15591573

15601574
def map(self, mapper):

pandas/tests/test_index.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1137,6 +1137,11 @@ def get_reindex_type(target):
11371137
self.assertEqual(reindexed.levels[0].dtype.type, np.int64)
11381138
self.assertEqual(reindexed.levels[1].dtype.type, np.float64)
11391139

1140+
def test_groupby(self):
1141+
idx = Index(range(5))
1142+
groups = idx.groupby(np.array([1,1,2,2,2]))
1143+
exp = {1: [0, 1], 2: [2, 3, 4]}
1144+
tm.assert_dict_equal(groups, exp)
11401145

11411146

11421147
class Numeric(Base):
@@ -3524,6 +3529,17 @@ def test_reindex_lvl_preserves_type_if_target_is_empty_list_or_array(self):
35243529
self.assertEqual(idx.reindex([], level=1)[0].levels[1].dtype.type,
35253530
np.object_)
35263531

3532+
def test_groupby(self):
3533+
groups = self.index.groupby(np.array([1, 1, 1, 2, 2, 2]))
3534+
labels = self.index.get_values().tolist()
3535+
exp = {1: labels[:3], 2: labels[3:]}
3536+
tm.assert_dict_equal(groups, exp)
3537+
3538+
# GH5620
3539+
groups = self.index.groupby(self.index)
3540+
exp = dict((key, [key]) for key in self.index)
3541+
tm.assert_dict_equal(groups, exp)
3542+
35273543

35283544
def test_get_combined_index():
35293545
from pandas.core.index import _get_combined_index

0 commit comments

Comments
 (0)