@@ -690,6 +690,52 @@ def test_loc_general(self):
690
690
assert_series_equal (result ,expected )
691
691
self .assertEqual (result .dtype , object )
692
692
693
+ def test_loc_setitem_consistency (self ):
694
+
695
+ # GH 6149
696
+ # coerce similary for setitem and loc when rows have a null-slice
697
+ expected = DataFrame ({ 'date' : Series (0 ,index = range (5 ),dtype = np .int64 ),
698
+ 'val' : Series (range (5 ),dtype = np .int64 ) })
699
+
700
+ df = DataFrame ({ 'date' : date_range ('2000-01-01' ,'2000-01-5' ),
701
+ 'val' : Series (range (5 ),dtype = np .int64 ) })
702
+ df .loc [:,'date' ] = 0
703
+ assert_frame_equal (df ,expected )
704
+
705
+ df = DataFrame ({ 'date' : date_range ('2000-01-01' ,'2000-01-5' ),
706
+ 'val' : Series (range (5 ),dtype = np .int64 ) })
707
+ df .loc [:,'date' ] = np .array (0 ,dtype = np .int64 )
708
+ assert_frame_equal (df ,expected )
709
+
710
+ df = DataFrame ({ 'date' : date_range ('2000-01-01' ,'2000-01-5' ),
711
+ 'val' : Series (range (5 ),dtype = np .int64 ) })
712
+ df .loc [:,'date' ] = np .array ([0 ,0 ,0 ,0 ,0 ],dtype = np .int64 )
713
+ assert_frame_equal (df ,expected )
714
+
715
+ expected = DataFrame ({ 'date' : Series ('foo' ,index = range (5 )),
716
+ 'val' : Series (range (5 ),dtype = np .int64 ) })
717
+ df = DataFrame ({ 'date' : date_range ('2000-01-01' ,'2000-01-5' ),
718
+ 'val' : Series (range (5 ),dtype = np .int64 ) })
719
+ df .loc [:,'date' ] = 'foo'
720
+ assert_frame_equal (df ,expected )
721
+
722
+ expected = DataFrame ({ 'date' : Series (1.0 ,index = range (5 )),
723
+ 'val' : Series (range (5 ),dtype = np .int64 ) })
724
+ df = DataFrame ({ 'date' : date_range ('2000-01-01' ,'2000-01-5' ),
725
+ 'val' : Series (range (5 ),dtype = np .int64 ) })
726
+ df .loc [:,'date' ] = 1.0
727
+ assert_frame_equal (df ,expected )
728
+
729
+ # empty (essentially noops)
730
+ expected = DataFrame (columns = ['x' , 'y' ])
731
+ df = DataFrame (columns = ['x' , 'y' ])
732
+ df .loc [:, 'x' ] = 1
733
+ assert_frame_equal (df ,expected )
734
+
735
+ df = DataFrame (columns = ['x' , 'y' ])
736
+ df ['x' ] = 1
737
+ assert_frame_equal (df ,expected )
738
+
693
739
def test_loc_setitem_frame (self ):
694
740
df = self .frame_labels
695
741
0 commit comments