@@ -4527,119 +4527,6 @@ def test_numpy_reshape(self):
45274527 tm .assert_raises_regex (ValueError , msg , np .reshape ,
45284528 cat , cat .shape , order = 'F' )
45294529
4530- def test_na_actions (self ):
4531-
4532- cat = pd .Categorical ([1 , 2 , 3 , np .nan ], categories = [1 , 2 , 3 ])
4533- vals = ["a" , "b" , np .nan , "d" ]
4534- df = pd .DataFrame ({"cats" : cat , "vals" : vals })
4535- cat2 = pd .Categorical ([1 , 2 , 3 , 3 ], categories = [1 , 2 , 3 ])
4536- vals2 = ["a" , "b" , "b" , "d" ]
4537- df_exp_fill = pd .DataFrame ({"cats" : cat2 , "vals" : vals2 })
4538- cat3 = pd .Categorical ([1 , 2 , 3 ], categories = [1 , 2 , 3 ])
4539- vals3 = ["a" , "b" , np .nan ]
4540- df_exp_drop_cats = pd .DataFrame ({"cats" : cat3 , "vals" : vals3 })
4541- cat4 = pd .Categorical ([1 , 2 ], categories = [1 , 2 , 3 ])
4542- vals4 = ["a" , "b" ]
4543- df_exp_drop_all = pd .DataFrame ({"cats" : cat4 , "vals" : vals4 })
4544-
4545- # fillna
4546- res = df .fillna (value = {"cats" : 3 , "vals" : "b" })
4547- tm .assert_frame_equal (res , df_exp_fill )
4548-
4549- def f ():
4550- df .fillna (value = {"cats" : 4 , "vals" : "c" })
4551-
4552- pytest .raises (ValueError , f )
4553-
4554- res = df .fillna (method = 'pad' )
4555- tm .assert_frame_equal (res , df_exp_fill )
4556-
4557- res = df .dropna (subset = ["cats" ])
4558- tm .assert_frame_equal (res , df_exp_drop_cats )
4559-
4560- res = df .dropna ()
4561- tm .assert_frame_equal (res , df_exp_drop_all )
4562-
4563- # make sure that fillna takes missing values into account
4564- c = Categorical ([np .nan , "b" , np .nan ], categories = ["a" , "b" ])
4565- df = pd .DataFrame ({"cats" : c , "vals" : [1 , 2 , 3 ]})
4566-
4567- cat_exp = Categorical (["a" , "b" , "a" ], categories = ["a" , "b" ])
4568- df_exp = pd .DataFrame ({"cats" : cat_exp , "vals" : [1 , 2 , 3 ]})
4569-
4570- res = df .fillna ("a" )
4571- tm .assert_frame_equal (res , df_exp )
4572-
4573- # GH 14021
4574- # np.nan should always be a is a valid filler
4575- cat = Categorical ([np .nan , 2 , np .nan ])
4576- val = Categorical ([np .nan , np .nan , np .nan ])
4577- df = DataFrame ({"cats" : cat , "vals" : val })
4578- res = df .fillna (df .median ())
4579- v_exp = [np .nan , np .nan , np .nan ]
4580- df_exp = pd .DataFrame ({"cats" : [2 , 2 , 2 ], "vals" : v_exp },
4581- dtype = 'category' )
4582- tm .assert_frame_equal (res , df_exp )
4583-
4584- result = df .cats .fillna (np .nan )
4585- tm .assert_series_equal (result , df .cats )
4586- result = df .vals .fillna (np .nan )
4587- tm .assert_series_equal (result , df .vals )
4588-
4589- idx = pd .DatetimeIndex (['2011-01-01 09:00' , '2016-01-01 23:45' ,
4590- '2011-01-01 09:00' , pd .NaT , pd .NaT ])
4591- df = DataFrame ({'a' : pd .Categorical (idx )})
4592- tm .assert_frame_equal (df .fillna (value = pd .NaT ), df )
4593-
4594- idx = pd .PeriodIndex (['2011-01' , '2011-01' , '2011-01' ,
4595- pd .NaT , pd .NaT ], freq = 'M' )
4596- df = DataFrame ({'a' : pd .Categorical (idx )})
4597- tm .assert_frame_equal (df .fillna (value = pd .NaT ), df )
4598-
4599- idx = pd .TimedeltaIndex (['1 days' , '2 days' ,
4600- '1 days' , pd .NaT , pd .NaT ])
4601- df = pd .DataFrame ({'a' : pd .Categorical (idx )})
4602- tm .assert_frame_equal (df .fillna (value = pd .NaT ), df )
4603-
4604- @pytest .mark .parametrize ('fill_value, expected_output' , [
4605- ('a' , ['a' , 'a' , 'b' , 'a' , 'a' ]),
4606- ({1 : 'a' , 3 : 'b' , 4 : 'b' }, ['a' , 'a' , 'b' , 'b' , 'b' ]),
4607- ({1 : 'a' }, ['a' , 'a' , 'b' , np .nan , np .nan ]),
4608- ({1 : 'a' , 3 : 'b' }, ['a' , 'a' , 'b' , 'b' , np .nan ]),
4609- (pd .Series ('a' ), ['a' , np .nan , 'b' , np .nan , np .nan ]),
4610- (pd .Series ('a' , index = [1 ]), ['a' , 'a' , 'b' , np .nan , np .nan ]),
4611- (pd .Series ({1 : 'a' , 3 : 'b' }), ['a' , 'a' , 'b' , 'b' , np .nan ]),
4612- (pd .Series (['a' , 'b' ], index = [3 , 4 ]), ['a' , np .nan , 'b' , 'a' , 'b' ])
4613- ])
4614- def test_fillna_series_categorical (self , fill_value , expected_output ):
4615- # GH 17033
4616- # Test fillna for a Categorical series
4617- data = ['a' , np .nan , 'b' , np .nan , np .nan ]
4618- s = pd .Series (pd .Categorical (data , categories = ['a' , 'b' ]))
4619- exp = pd .Series (pd .Categorical (expected_output , categories = ['a' , 'b' ]))
4620- tm .assert_series_equal (s .fillna (fill_value ), exp )
4621-
4622- def test_fillna_series_categorical_errormsg (self ):
4623- data = ['a' , np .nan , 'b' , np .nan , np .nan ]
4624- s = pd .Series (pd .Categorical (data , categories = ['a' , 'b' ]))
4625-
4626- with tm .assert_raises_regex (ValueError ,
4627- "fill value must be in categories" ):
4628- s .fillna ('d' )
4629-
4630- with tm .assert_raises_regex (ValueError ,
4631- "fill value must be in categories" ):
4632- s .fillna (pd .Series ('d' ))
4633-
4634- with tm .assert_raises_regex (ValueError ,
4635- "fill value must be in categories" ):
4636- s .fillna ({1 : 'd' , 3 : 'a' })
4637-
4638- with tm .assert_raises_regex (TypeError ,
4639- '"value" parameter must be a scalar or '
4640- 'dict, but you passed a "list"' ):
4641- s .fillna (['a' , 'b' ])
4642-
46434530 def test_astype_to_other (self ):
46444531
46454532 s = self .cat ['value_group' ]
0 commit comments