@@ -1063,6 +1063,7 @@ def test_loc_setitem_consistency(self):
1063
1063
1064
1064
# empty (essentially noops)
1065
1065
expected = DataFrame (columns = ['x' , 'y' ])
1066
+ expected ['x' ] = expected ['x' ].astype (np .int64 )
1066
1067
df = DataFrame (columns = ['x' , 'y' ])
1067
1068
df .loc [:, 'x' ] = 1
1068
1069
assert_frame_equal (df ,expected )
@@ -3369,7 +3370,7 @@ def f():
3369
3370
expected = DataFrame (columns = ['foo' ])
3370
3371
def f ():
3371
3372
df = DataFrame ()
3372
- df ['foo' ] = Series ([])
3373
+ df ['foo' ] = Series ([], dtype = 'object' )
3373
3374
return df
3374
3375
assert_frame_equal (f (), expected )
3375
3376
def f ():
@@ -3379,17 +3380,20 @@ def f():
3379
3380
assert_frame_equal (f (), expected )
3380
3381
def f ():
3381
3382
df = DataFrame ()
3382
- df ['foo' ] = Series ( range ( len ( df )))
3383
+ df ['foo' ] = df . index
3383
3384
return df
3384
3385
assert_frame_equal (f (), expected )
3386
+
3387
+ expected = DataFrame (columns = ['foo' ])
3388
+ expected ['foo' ] = expected ['foo' ].astype ('float64' )
3385
3389
def f ():
3386
3390
df = DataFrame ()
3387
3391
df ['foo' ] = []
3388
3392
return df
3389
3393
assert_frame_equal (f (), expected )
3390
3394
def f ():
3391
3395
df = DataFrame ()
3392
- df ['foo' ] = df . index
3396
+ df ['foo' ] = Series ( range ( len ( df )))
3393
3397
return df
3394
3398
assert_frame_equal (f (), expected )
3395
3399
def f ():
@@ -3422,21 +3426,31 @@ def f():
3422
3426
3423
3427
# GH5720, GH5744
3424
3428
# don't create rows when empty
3429
+ expected = DataFrame (columns = ['A' ,'B' ,'New' ])
3430
+ expected ['A' ] = expected ['A' ].astype ('int64' )
3431
+ expected ['B' ] = expected ['B' ].astype ('float64' )
3432
+ expected ['New' ] = expected ['New' ].astype ('float64' )
3425
3433
df = DataFrame ({"A" : [1 , 2 , 3 ], "B" : [1.2 , 4.2 , 5.2 ]})
3426
3434
y = df [df .A > 5 ]
3427
3435
y ['New' ] = np .nan
3428
- assert_frame_equal (y ,DataFrame (columns = ['A' ,'B' ,'New' ]))
3436
+ assert_frame_equal (y ,expected )
3437
+ #assert_frame_equal(y,expected)
3429
3438
3439
+ expected = DataFrame (columns = ['a' ,'b' ,'c c' ,'d' ])
3440
+ expected ['d' ] = expected ['d' ].astype ('int64' )
3430
3441
df = DataFrame (columns = ['a' , 'b' , 'c c' ])
3431
3442
df ['d' ] = 3
3432
- assert_frame_equal (df ,DataFrame ( columns = [ 'a' , 'b' , 'c c' , 'd' ]) )
3443
+ assert_frame_equal (df ,expected )
3433
3444
assert_series_equal (df ['c c' ],Series (name = 'c c' ,dtype = object ))
3434
3445
3435
3446
# reindex columns is ok
3436
3447
df = DataFrame ({"A" : [1 , 2 , 3 ], "B" : [1.2 , 4.2 , 5.2 ]})
3437
3448
y = df [df .A > 5 ]
3438
3449
result = y .reindex (columns = ['A' ,'B' ,'C' ])
3439
3450
expected = DataFrame (columns = ['A' ,'B' ,'C' ])
3451
+ expected ['A' ] = expected ['A' ].astype ('int64' )
3452
+ expected ['B' ] = expected ['B' ].astype ('float64' )
3453
+ expected ['C' ] = expected ['C' ].astype ('float64' )
3440
3454
assert_frame_equal (result ,expected )
3441
3455
3442
3456
# GH 5756
@@ -4422,6 +4436,15 @@ def test_indexing_assignment_dict_already_exists(self):
4422
4436
expected .loc [5 ] = [9 , 99 ]
4423
4437
tm .assert_frame_equal (df , expected )
4424
4438
4439
+ def test_indexing_dtypes_on_empty (self ):
4440
+ # Check that .iloc and .ix return correct dtypes GH9983
4441
+ df = DataFrame ({'a' :[1 ,2 ,3 ],'b' :['b' ,'b2' ,'b3' ]})
4442
+ df2 = df .ix [[],:]
4443
+
4444
+ self .assertEqual (df2 .loc [:,'a' ].dtype , int )
4445
+ assert_series_equal (df2 .loc [:,'a' ], df2 .iloc [:,0 ])
4446
+ assert_series_equal (df2 .loc [:,'a' ], df2 .ix [:,0 ])
4447
+
4425
4448
4426
4449
4427
4450
class TestCategoricalIndex (tm .TestCase ):
0 commit comments