@@ -663,3 +663,36 @@ def test_iter_rolling_datetime(expected, expected_index, window):
663663
664664    for  (expected , actual ) in  zip (expected , ser .rolling (window )):
665665        tm .assert_series_equal (actual , expected )
666+ 
667+ 
668+ @pytest .mark .parametrize ( 
669+     "grouping,_index" , 
670+     [ 
671+         ( 
672+             {"level" : 0 }, 
673+             pd .MultiIndex .from_tuples ( 
674+                 [(0 , 0 ), (0 , 0 ), (1 , 1 ), (1 , 1 ), (1 , 1 )], names = [None , None ] 
675+             ), 
676+         ), 
677+         ( 
678+             {"by" : "X" }, 
679+             pd .MultiIndex .from_tuples ( 
680+                 [(0 , 0 ), (1 , 0 ), (2 , 1 ), (3 , 1 ), (4 , 1 )], names = ["X" , None ] 
681+             ), 
682+         ), 
683+     ], 
684+ ) 
685+ def  test_rolling_positional_argument (grouping , _index , raw ):
686+     # GH 34605 
687+ 
688+     def  scaled_sum (* args ):
689+         if  len (args ) <  2 :
690+             raise  ValueError ("The function needs two arguments" )
691+         array , scale  =  args 
692+         return  array .sum () /  scale 
693+ 
694+     df  =  DataFrame (data = {"X" : range (5 )}, index = [0 , 0 , 1 , 1 , 1 ])
695+ 
696+     expected  =  DataFrame (data = {"X" : [0.0 , 0.5 , 1.0 , 1.5 , 2.0 ]}, index = _index )
697+     result  =  df .groupby (** grouping ).rolling (1 ).apply (scaled_sum , raw = raw , args = (2 ,))
698+     tm .assert_frame_equal (result , expected )
0 commit comments