@@ -418,6 +418,35 @@ def test_groupby_rolling_empty_frame(self):
418418 expected .index = pd .MultiIndex .from_tuples ([], names = ["s1" , "s2" , None ])
419419 tm .assert_frame_equal (result , expected )
420420
421+ def test_groupby_rolling_string_index (self ):
422+ # GH: 36727
423+ df = pd .DataFrame (
424+ [
425+ ["A" , "group_1" , pd .Timestamp (2019 , 1 , 1 , 9 )],
426+ ["B" , "group_1" , pd .Timestamp (2019 , 1 , 2 , 9 )],
427+ ["Z" , "group_2" , pd .Timestamp (2019 , 1 , 3 , 9 )],
428+ ["H" , "group_1" , pd .Timestamp (2019 , 1 , 6 , 9 )],
429+ ["E" , "group_2" , pd .Timestamp (2019 , 1 , 20 , 9 )],
430+ ],
431+ columns = ["index" , "group" , "eventTime" ],
432+ ).set_index ("index" )
433+
434+ groups = df .groupby ("group" )
435+ df ["count_to_date" ] = groups .cumcount ()
436+ rolling_groups = groups .rolling ("10d" , on = "eventTime" )
437+ result = rolling_groups .apply (lambda df : df .shape [0 ])
438+ expected = pd .DataFrame (
439+ [
440+ ["A" , "group_1" , pd .Timestamp (2019 , 1 , 1 , 9 ), 1.0 ],
441+ ["B" , "group_1" , pd .Timestamp (2019 , 1 , 2 , 9 ), 2.0 ],
442+ ["H" , "group_1" , pd .Timestamp (2019 , 1 , 6 , 9 ), 3.0 ],
443+ ["Z" , "group_2" , pd .Timestamp (2019 , 1 , 3 , 9 ), 1.0 ],
444+ ["E" , "group_2" , pd .Timestamp (2019 , 1 , 20 , 9 ), 1.0 ],
445+ ],
446+ columns = ["index" , "group" , "eventTime" , "count_to_date" ],
447+ ).set_index (["group" , "index" ])
448+ tm .assert_frame_equal (result , expected )
449+
421450 def test_groupby_rolling_no_sort (self ):
422451 # GH 36889
423452 result = (
0 commit comments