@@ -4311,23 +4311,24 @@ def test_operators_none_as_na(self):
4311
4311
4312
4312
ops = [operator .add , operator .sub , operator .mul , operator .truediv ]
4313
4313
4314
+ # since filling converts dtypes from object, changed expected to be object
4314
4315
for op in ops :
4315
4316
filled = df .fillna (np .nan )
4316
4317
result = op (df , 3 )
4317
- expected = op (filled , 3 )
4318
+ expected = op (filled , 3 ). astype ( object )
4318
4319
expected [com .isnull (expected )] = None
4319
4320
assert_frame_equal (result , expected )
4320
4321
4321
4322
result = op (df , df )
4322
- expected = op (filled , filled )
4323
+ expected = op (filled , filled ). astype ( object )
4323
4324
expected [com .isnull (expected )] = None
4324
4325
assert_frame_equal (result , expected )
4325
4326
4326
4327
result = op (df , df .fillna (7 ))
4327
4328
assert_frame_equal (result , expected )
4328
4329
4329
4330
result = op (df .fillna (7 ), df )
4330
- assert_frame_equal (result , expected )
4331
+ assert_frame_equal (result , expected , check_dtype = False )
4331
4332
4332
4333
def test_comparison_invalid (self ):
4333
4334
@@ -6695,6 +6696,25 @@ def test_fillna(self):
6695
6696
df .fillna ({ 2 : 'foo' }, inplace = True )
6696
6697
assert_frame_equal (df , expected )
6697
6698
6699
+ def test_fillna_dtype_conversion (self ):
6700
+ # make sure that fillna on an empty frame works
6701
+ df = DataFrame (index = ["A" ,"B" ,"C" ], columns = [1 ,2 ,3 ,4 ,5 ])
6702
+ result = df .get_dtype_counts ().order ()
6703
+ expected = Series ({ 'object' : 5 })
6704
+ assert_series_equal (result , expected )
6705
+
6706
+ result = df .fillna (1 )
6707
+ expected = DataFrame (1 , index = ["A" ,"B" ,"C" ], columns = [1 ,2 ,3 ,4 ,5 ])
6708
+ result = result .get_dtype_counts ().order ()
6709
+ expected = Series ({ 'int64' : 5 })
6710
+ assert_series_equal (result , expected )
6711
+
6712
+ # empty block
6713
+ df = DataFrame (index = lrange (3 ),columns = ['A' ,'B' ],dtype = 'float64' )
6714
+ result = df .fillna ('nan' )
6715
+ expected = DataFrame ('nan' ,index = lrange (3 ),columns = ['A' ,'B' ])
6716
+ assert_frame_equal (result , expected )
6717
+
6698
6718
def test_ffill (self ):
6699
6719
self .tsframe ['A' ][:5 ] = nan
6700
6720
self .tsframe ['A' ][- 5 :] = nan
@@ -10812,7 +10832,6 @@ def test_boolean_indexing_mixed(self):
10812
10832
expected .loc [35 ,4 ] = 1
10813
10833
assert_frame_equal (df2 ,expected )
10814
10834
10815
- # add object, should this raise?
10816
10835
df ['foo' ] = 'test'
10817
10836
with tm .assertRaisesRegexp (TypeError , 'boolean setting on mixed-type' ):
10818
10837
df [df > 0.3 ] = 1
0 commit comments