@@ -1674,3 +1674,43 @@ def test_tuple_correct_keyerror():
1674
1674
[3 , 4 ]]))
1675
1675
with tm .assert_raises_regex (KeyError , "(7, 8)" ):
1676
1676
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