@@ -417,3 +417,32 @@ def test_groupby_rolling_empty_frame(self):
417
417
result = expected .groupby (["s1" , "s2" ]).rolling (window = 1 ).sum ()
418
418
expected .index = pd .MultiIndex .from_tuples ([], names = ["s1" , "s2" , None ])
419
419
tm .assert_frame_equal (result , expected )
420
+
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 )
0 commit comments