@@ -270,33 +270,33 @@ def test_fillna(self):
270
270
pd .Timestamp ('2012-11-11 00:00:00+01:00' )]})
271
271
assert_frame_equal (df .fillna (method = 'bfill' ), exp )
272
272
273
- def test_na_actions (self ):
273
+ def test_na_actions_categorical (self ):
274
274
275
- cat = pd . Categorical ([1 , 2 , 3 , np .nan ], categories = [1 , 2 , 3 ])
275
+ cat = Categorical ([1 , 2 , 3 , np .nan ], categories = [1 , 2 , 3 ])
276
276
vals = ["a" , "b" , np .nan , "d" ]
277
- df = pd . DataFrame ({"cats" : cat , "vals" : vals })
278
- cat2 = pd . Categorical ([1 , 2 , 3 , 3 ], categories = [1 , 2 , 3 ])
277
+ df = DataFrame ({"cats" : cat , "vals" : vals })
278
+ cat2 = Categorical ([1 , 2 , 3 , 3 ], categories = [1 , 2 , 3 ])
279
279
vals2 = ["a" , "b" , "b" , "d" ]
280
- df_exp_fill = pd . DataFrame ({"cats" : cat2 , "vals" : vals2 })
281
- cat3 = pd . Categorical ([1 , 2 , 3 ], categories = [1 , 2 , 3 ])
280
+ df_exp_fill = DataFrame ({"cats" : cat2 , "vals" : vals2 })
281
+ cat3 = Categorical ([1 , 2 , 3 ], categories = [1 , 2 , 3 ])
282
282
vals3 = ["a" , "b" , np .nan ]
283
- df_exp_drop_cats = pd . DataFrame ({"cats" : cat3 , "vals" : vals3 })
284
- cat4 = pd . Categorical ([1 , 2 ], categories = [1 , 2 , 3 ])
283
+ df_exp_drop_cats = DataFrame ({"cats" : cat3 , "vals" : vals3 })
284
+ cat4 = Categorical ([1 , 2 ], categories = [1 , 2 , 3 ])
285
285
vals4 = ["a" , "b" ]
286
- df_exp_drop_all = pd . DataFrame ({"cats" : cat4 , "vals" : vals4 })
286
+ df_exp_drop_all = DataFrame ({"cats" : cat4 , "vals" : vals4 })
287
287
288
288
# fillna
289
289
res = df .fillna (value = {"cats" : 3 , "vals" : "b" })
290
290
tm .assert_frame_equal (res , df_exp_fill )
291
291
292
- def f ():
292
+ with tm .assert_raises_regex (ValueError , "fill value must be "
293
+ "in categories" ):
293
294
df .fillna (value = {"cats" : 4 , "vals" : "c" })
294
295
295
- pytest .raises (ValueError , f )
296
-
297
296
res = df .fillna (method = 'pad' )
298
297
tm .assert_frame_equal (res , df_exp_fill )
299
298
299
+ # dropna
300
300
res = df .dropna (subset = ["cats" ])
301
301
tm .assert_frame_equal (res , df_exp_drop_cats )
302
302
@@ -308,19 +308,20 @@ def f():
308
308
df = pd .DataFrame ({"cats" : c , "vals" : [1 , 2 , 3 ]})
309
309
310
310
cat_exp = Categorical (["a" , "b" , "a" ], categories = ["a" , "b" ])
311
- df_exp = pd . DataFrame ({"cats" : cat_exp , "vals" : [1 , 2 , 3 ]})
311
+ df_exp = DataFrame ({"cats" : cat_exp , "vals" : [1 , 2 , 3 ]})
312
312
313
313
res = df .fillna ("a" )
314
314
tm .assert_frame_equal (res , df_exp )
315
315
316
+ def test_fillna_categorical_nan (self ):
316
317
# GH 14021
317
- # np.nan should always be a is a valid filler
318
+ # np.nan should always be a valid filler
318
319
cat = Categorical ([np .nan , 2 , np .nan ])
319
320
val = Categorical ([np .nan , np .nan , np .nan ])
320
321
df = DataFrame ({"cats" : cat , "vals" : val })
321
322
res = df .fillna (df .median ())
322
323
v_exp = [np .nan , np .nan , np .nan ]
323
- df_exp = pd . DataFrame ({"cats" : [2 , 2 , 2 ], "vals" : v_exp },
324
+ df_exp = DataFrame ({"cats" : [2 , 2 , 2 ], "vals" : v_exp },
324
325
dtype = 'category' )
325
326
tm .assert_frame_equal (res , df_exp )
326
327
@@ -331,17 +332,17 @@ def f():
331
332
332
333
idx = pd .DatetimeIndex (['2011-01-01 09:00' , '2016-01-01 23:45' ,
333
334
'2011-01-01 09:00' , pd .NaT , pd .NaT ])
334
- df = DataFrame ({'a' : pd . Categorical (idx )})
335
+ df = DataFrame ({'a' : Categorical (idx )})
335
336
tm .assert_frame_equal (df .fillna (value = pd .NaT ), df )
336
337
337
338
idx = pd .PeriodIndex (['2011-01' , '2011-01' , '2011-01' ,
338
339
pd .NaT , pd .NaT ], freq = 'M' )
339
- df = DataFrame ({'a' : pd . Categorical (idx )})
340
+ df = DataFrame ({'a' : Categorical (idx )})
340
341
tm .assert_frame_equal (df .fillna (value = pd .NaT ), df )
341
342
342
343
idx = pd .TimedeltaIndex (['1 days' , '2 days' ,
343
344
'1 days' , pd .NaT , pd .NaT ])
344
- df = pd . DataFrame ({'a' : pd . Categorical (idx )})
345
+ df = DataFrame ({'a' : Categorical (idx )})
345
346
tm .assert_frame_equal (df .fillna (value = pd .NaT ), df )
346
347
347
348
def test_fillna_downcast (self ):
0 commit comments