@@ -428,3 +428,32 @@ def test_groupby_rolling_empty_frame(self):
428
428
result = expected .groupby (["s1" , "s2" ]).rolling (window = 1 ).sum ()
429
429
expected .index = pd .MultiIndex .from_tuples ([], names = ["s1" , "s2" , None ])
430
430
tm .assert_frame_equal (result , expected )
431
+
432
+ def test_groupby_rolling_string_index (self ):
433
+ # GH: 36727
434
+ df = pd .DataFrame (
435
+ [
436
+ ["A" , "group_1" , pd .Timestamp (2019 , 1 , 1 , 9 )],
437
+ ["B" , "group_1" , pd .Timestamp (2019 , 1 , 2 , 9 )],
438
+ ["Z" , "group_2" , pd .Timestamp (2019 , 1 , 3 , 9 )],
439
+ ["H" , "group_1" , pd .Timestamp (2019 , 1 , 6 , 9 )],
440
+ ["E" , "group_2" , pd .Timestamp (2019 , 1 , 20 , 9 )],
441
+ ],
442
+ columns = ["index" , "group" , "eventTime" ],
443
+ ).set_index ("index" )
444
+
445
+ groups = df .groupby ("group" )
446
+ df ["count_to_date" ] = groups .cumcount ()
447
+ rolling_groups = groups .rolling ("10d" , on = "eventTime" )
448
+ result = rolling_groups .apply (lambda df : df .shape [0 ])
449
+ expected = pd .DataFrame (
450
+ [
451
+ ["A" , "group_1" , pd .Timestamp (2019 , 1 , 1 , 9 ), 1.0 ],
452
+ ["B" , "group_1" , pd .Timestamp (2019 , 1 , 2 , 9 ), 2.0 ],
453
+ ["H" , "group_1" , pd .Timestamp (2019 , 1 , 6 , 9 ), 3.0 ],
454
+ ["Z" , "group_2" , pd .Timestamp (2019 , 1 , 3 , 9 ), 1.0 ],
455
+ ["E" , "group_2" , pd .Timestamp (2019 , 1 , 20 , 9 ), 1.0 ],
456
+ ],
457
+ columns = ["index" , "group" , "eventTime" , "count_to_date" ],
458
+ ).set_index (["group" , "index" ])
459
+ tm .assert_frame_equal (result , expected )
0 commit comments