Skip to content

Commit 4022a03

Browse files
committed
BUG: fix groupby segfault on MultiIndex issue #2706
1 parent 7f00843 commit 4022a03

File tree

3 files changed

+13
-1
lines changed

3 files changed

+13
-1
lines changed

pandas/core/groupby.py

+3
Original file line numberDiff line numberDiff line change
@@ -1081,6 +1081,9 @@ def __init__(self, index, grouper=None, name=None, level=None,
10811081
if isinstance(grouper, (Series, Index)) and name is None:
10821082
self.name = grouper.name
10831083

1084+
if isinstance(grouper, MultiIndex):
1085+
self.grouper = grouper.values
1086+
10841087
# pre-computed
10851088
self._was_factor = False
10861089
self._should_compress = True

pandas/tests/test_groupby.py

-1
Original file line numberDiff line numberDiff line change
@@ -2186,7 +2186,6 @@ def test_groupby_first_datetime64(self):
21862186
got_dt = result.dtype
21872187
self.assert_(issubclass(got_dt.type, np.datetime64))
21882188

2189-
21902189
def assert_fp_equal(a, b):
21912190
assert((np.abs(a - b) < 1e-12).all())
21922191

pandas/tests/test_multilevel.py

+10
Original file line numberDiff line numberDiff line change
@@ -1745,6 +1745,16 @@ def test_tuples_have_na(self):
17451745
self.assertTrue(isnull(index[4][0]))
17461746
self.assertTrue(isnull(index.values[4][0]))
17471747

1748+
def test_duplicate_groupby_issues(self):
1749+
idx_tp = [('600809', '20061231'), ('600809', '20070331'),
1750+
('600809', '20070630'), ('600809', '20070331')]
1751+
dt = ['demo','demo','demo','demo']
1752+
1753+
idx = MultiIndex.from_tuples(idx_tp,names = ['STK_ID','RPT_Date'])
1754+
s = Series(dt, index=idx)
1755+
1756+
result = s.groupby(s.index).first()
1757+
self.assertEquals(len(result), 3)
17481758

17491759
if __name__ == '__main__':
17501760

0 commit comments

Comments
 (0)