@@ -1674,3 +1674,43 @@ def test_tuple_correct_keyerror():
16741674 [3 , 4 ]]))
16751675 with tm .assert_raises_regex (KeyError , "(7, 8)" ):
16761676 df .groupby ((7 , 8 )).mean ()
1677+
1678+
1679+ def test_dup_index_names ():
1680+ # duplicated index names in groupby operations should be renamed (GH 19029):
1681+ df = pd .DataFrame (data = {'date' : list (pd .date_range ('5.1.2018' , '5.3.2018' )),
1682+ 'vals' : list (range (3 ))})
1683+
1684+ mi = pd .MultiIndex .from_product ([[5 ], [1 , 2 , 3 ]], names = ['date0' , 'date1' ])
1685+ expected = pd .Series (data = list (range (3 )), index = mi , name = 'vals' )
1686+
1687+ failed = False
1688+ try :
1689+ result = df .groupby ([df .date .dt .month , df .date .dt .day ])['vals' ].sum ()
1690+ except ValueError as e :
1691+ failed = True
1692+
1693+ assert failed == False
1694+
1695+ tm .assert_series_equal (result ,expected )
1696+
1697+
1698+ def test_empty_index_names ():
1699+ # don't rename frames in case no names were assigned (GH 19029)
1700+ df = pd .DataFrame (data = {'date' : list (pd .date_range ('5.1.2018' , '5.3.2018' )),
1701+ 'vals' : list (range (3 ))})
1702+
1703+ mi = pd .MultiIndex .from_product ([[5 ], [1 , 2 , 3 ]])
1704+ expected = pd .Series (data = list (range (3 )), index = mi , name = 'vals' )
1705+
1706+ failed = False
1707+ try :
1708+ result = df .groupby ([df .date .dt .month .rename (None ),
1709+ df .date .dt .day .rename (None )])['vals' ].sum ()
1710+ except ValueError as e :
1711+ failed = True
1712+
1713+ assert failed == False
1714+
1715+ tm .assert_series_equal (result ,expected )
1716+
0 commit comments