@@ -873,3 +873,62 @@ def test_groupby_resample_then_groupby_is_reused_when_index_is_set_from_column()
873
873
result_3 = gb [["numbers" ]].transform ("sum" )
874
874
875
875
tm .assert_frame_equal (result_1 , result_3 )
876
+
877
+
878
+ def test_groupby_resample_then_groupby_is_reused_when_groupby_selection_is_not_none ():
879
+ # GH 59350
880
+ df = DataFrame (
881
+ data = {
882
+ "datetime" : [
883
+ pd .to_datetime ("2024-07-30T00:00Z" ),
884
+ pd .to_datetime ("2024-07-30T00:01Z" ),
885
+ ],
886
+ "group" : ["A" , "A" ],
887
+ "numbers" : [100 , 200 ],
888
+ },
889
+ index = [1 , 0 ],
890
+ )
891
+
892
+ gb = df .groupby ("group" )
893
+ gb = gb [["numbers" , "datetime" ]] # gb._selection is ["numbers", "datetime"]
894
+
895
+ # use gb
896
+ result_1 = gb .transform ("max" )
897
+
898
+ index = Index ([1 , 0 ])
899
+ expected = DataFrame (
900
+ {
901
+ "numbers" : [200 , 200 ],
902
+ "datetime" : [
903
+ pd .to_datetime ("2024-07-30T00:01Z" ),
904
+ pd .to_datetime ("2024-07-30T00:01Z" ),
905
+ ],
906
+ },
907
+ index = index ,
908
+ )
909
+
910
+ tm .assert_frame_equal (result_1 , expected )
911
+
912
+ # resample gb, unrelated to above
913
+ rs = gb .resample ("1min" , on = "datetime" )
914
+ result_2 = rs .aggregate ({"numbers" : "sum" }) # Enter the `except IndexError:` block
915
+
916
+ index = pd .MultiIndex .from_arrays (
917
+ [
918
+ ["A" , "A" ],
919
+ [pd .to_datetime ("2024-07-30T00:00Z" ), pd .to_datetime ("2024-07-30T00:01Z" )],
920
+ ],
921
+ names = [
922
+ "group" ,
923
+ "datetime" ,
924
+ ],
925
+ )
926
+ columns = pd .MultiIndex .from_arrays ([["numbers" ], ["numbers" ]])
927
+ expected = DataFrame ([[100 ], [200 ]], index = index , columns = columns )
928
+
929
+ tm .assert_frame_equal (result_2 , expected )
930
+
931
+ # reuse gb, unrelated to above
932
+ result_3 = gb .transform ("max" )
933
+
934
+ tm .assert_frame_equal (result_1 , result_3 )
0 commit comments