@@ -1063,6 +1063,7 @@ def test_loc_setitem_consistency(self):
10631063
10641064 # empty (essentially noops)
10651065 expected = DataFrame (columns = ['x' , 'y' ])
1066+ expected ['x' ] = expected ['x' ].astype (np .int64 )
10661067 df = DataFrame (columns = ['x' , 'y' ])
10671068 df .loc [:, 'x' ] = 1
10681069 assert_frame_equal (df ,expected )
@@ -3376,7 +3377,7 @@ def f():
33763377 expected = DataFrame (columns = ['foo' ])
33773378 def f ():
33783379 df = DataFrame ()
3379- df ['foo' ] = Series ([])
3380+ df ['foo' ] = Series ([], dtype = 'object' )
33803381 return df
33813382 assert_frame_equal (f (), expected )
33823383 def f ():
@@ -3386,17 +3387,20 @@ def f():
33863387 assert_frame_equal (f (), expected )
33873388 def f ():
33883389 df = DataFrame ()
3389- df ['foo' ] = Series ( range ( len ( df )))
3390+ df ['foo' ] = df . index
33903391 return df
33913392 assert_frame_equal (f (), expected )
3393+
3394+ expected = DataFrame (columns = ['foo' ])
3395+ expected ['foo' ] = expected ['foo' ].astype ('float64' )
33923396 def f ():
33933397 df = DataFrame ()
33943398 df ['foo' ] = []
33953399 return df
33963400 assert_frame_equal (f (), expected )
33973401 def f ():
33983402 df = DataFrame ()
3399- df ['foo' ] = df . index
3403+ df ['foo' ] = Series ( range ( len ( df )))
34003404 return df
34013405 assert_frame_equal (f (), expected )
34023406 def f ():
@@ -3429,21 +3433,31 @@ def f():
34293433
34303434 # GH5720, GH5744
34313435 # don't create rows when empty
3436+ expected = DataFrame (columns = ['A' ,'B' ,'New' ])
3437+ expected ['A' ] = expected ['A' ].astype ('int64' )
3438+ expected ['B' ] = expected ['B' ].astype ('float64' )
3439+ expected ['New' ] = expected ['New' ].astype ('float64' )
34323440 df = DataFrame ({"A" : [1 , 2 , 3 ], "B" : [1.2 , 4.2 , 5.2 ]})
34333441 y = df [df .A > 5 ]
34343442 y ['New' ] = np .nan
3435- assert_frame_equal (y ,DataFrame (columns = ['A' ,'B' ,'New' ]))
3443+ assert_frame_equal (y ,expected )
3444+ #assert_frame_equal(y,expected)
34363445
3446+ expected = DataFrame (columns = ['a' ,'b' ,'c c' ,'d' ])
3447+ expected ['d' ] = expected ['d' ].astype ('int64' )
34373448 df = DataFrame (columns = ['a' , 'b' , 'c c' ])
34383449 df ['d' ] = 3
3439- assert_frame_equal (df ,DataFrame ( columns = [ 'a' , 'b' , 'c c' , 'd' ]) )
3450+ assert_frame_equal (df ,expected )
34403451 assert_series_equal (df ['c c' ],Series (name = 'c c' ,dtype = object ))
34413452
34423453 # reindex columns is ok
34433454 df = DataFrame ({"A" : [1 , 2 , 3 ], "B" : [1.2 , 4.2 , 5.2 ]})
34443455 y = df [df .A > 5 ]
34453456 result = y .reindex (columns = ['A' ,'B' ,'C' ])
34463457 expected = DataFrame (columns = ['A' ,'B' ,'C' ])
3458+ expected ['A' ] = expected ['A' ].astype ('int64' )
3459+ expected ['B' ] = expected ['B' ].astype ('float64' )
3460+ expected ['C' ] = expected ['C' ].astype ('float64' )
34473461 assert_frame_equal (result ,expected )
34483462
34493463 # GH 5756
@@ -4429,6 +4443,15 @@ def test_indexing_assignment_dict_already_exists(self):
44294443 expected .loc [5 ] = [9 , 99 ]
44304444 tm .assert_frame_equal (df , expected )
44314445
4446+ def test_indexing_dtypes_on_empty (self ):
4447+ # Check that .iloc and .ix return correct dtypes GH9983
4448+ df = DataFrame ({'a' :[1 ,2 ,3 ],'b' :['b' ,'b2' ,'b3' ]})
4449+ df2 = df .ix [[],:]
4450+
4451+ self .assertEqual (df2 .loc [:,'a' ].dtype , int )
4452+ assert_series_equal (df2 .loc [:,'a' ], df2 .iloc [:,0 ])
4453+ assert_series_equal (df2 .loc [:,'a' ], df2 .ix [:,0 ])
4454+
44324455
44334456
44344457class TestCategoricalIndex (tm .TestCase ):
0 commit comments