@@ -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 )
@@ -3376,7 +3377,7 @@ def f():
3376
3377
expected = DataFrame (columns = ['foo' ])
3377
3378
def f ():
3378
3379
df = DataFrame ()
3379
- df ['foo' ] = Series ([])
3380
+ df ['foo' ] = Series ([], dtype = 'object' )
3380
3381
return df
3381
3382
assert_frame_equal (f (), expected )
3382
3383
def f ():
@@ -3386,17 +3387,20 @@ def f():
3386
3387
assert_frame_equal (f (), expected )
3387
3388
def f ():
3388
3389
df = DataFrame ()
3389
- df ['foo' ] = Series ( range ( len ( df )))
3390
+ df ['foo' ] = df . index
3390
3391
return df
3391
3392
assert_frame_equal (f (), expected )
3393
+
3394
+ expected = DataFrame (columns = ['foo' ])
3395
+ expected ['foo' ] = expected ['foo' ].astype ('float64' )
3392
3396
def f ():
3393
3397
df = DataFrame ()
3394
3398
df ['foo' ] = []
3395
3399
return df
3396
3400
assert_frame_equal (f (), expected )
3397
3401
def f ():
3398
3402
df = DataFrame ()
3399
- df ['foo' ] = df . index
3403
+ df ['foo' ] = Series ( range ( len ( df )))
3400
3404
return df
3401
3405
assert_frame_equal (f (), expected )
3402
3406
def f ():
@@ -3429,21 +3433,31 @@ def f():
3429
3433
3430
3434
# GH5720, GH5744
3431
3435
# 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' )
3432
3440
df = DataFrame ({"A" : [1 , 2 , 3 ], "B" : [1.2 , 4.2 , 5.2 ]})
3433
3441
y = df [df .A > 5 ]
3434
3442
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)
3436
3445
3446
+ expected = DataFrame (columns = ['a' ,'b' ,'c c' ,'d' ])
3447
+ expected ['d' ] = expected ['d' ].astype ('int64' )
3437
3448
df = DataFrame (columns = ['a' , 'b' , 'c c' ])
3438
3449
df ['d' ] = 3
3439
- assert_frame_equal (df ,DataFrame ( columns = [ 'a' , 'b' , 'c c' , 'd' ]) )
3450
+ assert_frame_equal (df ,expected )
3440
3451
assert_series_equal (df ['c c' ],Series (name = 'c c' ,dtype = object ))
3441
3452
3442
3453
# reindex columns is ok
3443
3454
df = DataFrame ({"A" : [1 , 2 , 3 ], "B" : [1.2 , 4.2 , 5.2 ]})
3444
3455
y = df [df .A > 5 ]
3445
3456
result = y .reindex (columns = ['A' ,'B' ,'C' ])
3446
3457
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' )
3447
3461
assert_frame_equal (result ,expected )
3448
3462
3449
3463
# GH 5756
@@ -4429,6 +4443,15 @@ def test_indexing_assignment_dict_already_exists(self):
4429
4443
expected .loc [5 ] = [9 , 99 ]
4430
4444
tm .assert_frame_equal (df , expected )
4431
4445
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
+
4432
4455
4433
4456
4434
4457
class TestCategoricalIndex (tm .TestCase ):
0 commit comments