@@ -688,3 +688,34 @@ def test_operations_with_interval_categories_index(self, all_arithmetic_operator
688
688
result = getattr (df , op )(num )
689
689
expected = pd .DataFrame ([[getattr (n , op )(num ) for n in data ]], columns = ind )
690
690
tm .assert_frame_equal (result , expected )
691
+
692
+
693
+ def test_frame_with_zero_len_series_corner_cases ():
694
+ # GH#28600
695
+ # easy all-float case
696
+ df = pd .DataFrame (np .random .randn (6 ).reshape (3 , 2 ), columns = ["A" , "B" ])
697
+ ser = pd .Series (dtype = np .float64 )
698
+
699
+ result = df + ser
700
+ expected = pd .DataFrame (df .values * np .nan , columns = df .columns )
701
+ tm .assert_frame_equal (result , expected )
702
+
703
+ result = df == ser
704
+ expected = pd .DataFrame (False , index = df .index , columns = df .columns )
705
+ tm .assert_frame_equal (result , expected )
706
+
707
+ # non-float case should not raise on comparison
708
+ df2 = pd .DataFrame (df .values .view ("M8[ns]" ), columns = df .columns )
709
+ result = df2 == ser
710
+ expected = pd .DataFrame (False , index = df .index , columns = df .columns )
711
+ tm .assert_frame_equal (result , expected )
712
+
713
+
714
+ def test_zero_len_frame_with_series_corner_cases ():
715
+ # GH#28600
716
+ df = pd .DataFrame (columns = ["A" , "B" ], dtype = np .float64 )
717
+ ser = pd .Series ([1 , 2 ], index = ["A" , "B" ])
718
+
719
+ result = df + ser
720
+ expected = df
721
+ tm .assert_frame_equal (result , expected )
0 commit comments