@@ -871,14 +871,20 @@ def test_apply_multi_level_name(category):
871
871
b = [1 , 2 ] * 5
872
872
if category :
873
873
b = pd .Categorical (b , categories = [1 , 2 , 3 ])
874
- expected_index = pd .CategoricalIndex ([1 , 2 ], categories = [1 , 2 , 3 ], name = "B" )
874
+ expected_index = pd .CategoricalIndex ([1 , 2 , 3 ], categories = [1 , 2 , 3 ], name = "B" )
875
+ # GH#40669 - summing an empty frame gives float dtype
876
+ expected_values = [20.0 , 25.0 , 0.0 ]
875
877
else :
876
878
expected_index = Index ([1 , 2 ], name = "B" )
879
+ expected_values = [20 , 25 ]
880
+ expected = DataFrame (
881
+ {"C" : expected_values , "D" : expected_values }, index = expected_index
882
+ )
883
+
877
884
df = DataFrame (
878
885
{"A" : np .arange (10 ), "B" : b , "C" : list (range (10 )), "D" : list (range (10 ))}
879
886
).set_index (["A" , "B" ])
880
887
result = df .groupby ("B" ).apply (lambda x : x .sum ())
881
- expected = DataFrame ({"C" : [20 , 25 ], "D" : [20 , 25 ]}, index = expected_index )
882
888
tm .assert_frame_equal (result , expected )
883
889
assert df .index .names == ["A" , "B" ]
884
890
0 commit comments