@@ -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