@@ -840,13 +840,58 @@ def test_creation_astype(self):
840840 df ["cats" ] = df ["cats" ].astype ("category" )
841841 tm .assert_frame_equal (exp_df , df )
842842
843-
844843 df = pd .DataFrame ({"cats" :['a' , 'b' , 'b' , 'a' , 'a' , 'd' ], "vals" :[1 ,2 ,3 ,4 ,5 ,6 ]})
845844 cats = Categorical (['a' , 'b' , 'b' , 'a' , 'a' , 'd' ])
846845 exp_df = pd .DataFrame ({"cats" :cats , "vals" :[1 ,2 ,3 ,4 ,5 ,6 ]})
847846 df ["cats" ] = df ["cats" ].astype ("category" )
848847 tm .assert_frame_equal (exp_df , df )
849848
849+ def test_construction_series (self ):
850+
851+ l = [1 ,2 ,3 ,1 ]
852+ exp = Series (l ).astype ('category' )
853+ res = Series (l ,dtype = 'category' )
854+ tm .assert_series_equal (res , exp )
855+
856+ l = ["a" ,"b" ,"c" ,"a" ]
857+ exp = Series (l ).astype ('category' )
858+ res = Series (l ,dtype = 'category' )
859+ tm .assert_series_equal (res , exp )
860+
861+ # insert into frame with different index
862+ # GH 8076
863+ index = pd .date_range ('20000101' , periods = 3 )
864+ expected = Series (Categorical (values = [np .nan ,np .nan ,np .nan ],levels = ['a' , 'b' , 'c' ]))
865+ expected .index = index
866+
867+ expected = DataFrame ({'x' : expected })
868+ df = DataFrame ({'x' : Series (['a' , 'b' , 'c' ],dtype = 'category' )}, index = index )
869+ tm .assert_frame_equal (df , expected )
870+
871+ def test_reindex (self ):
872+
873+ index = pd .date_range ('20000101' , periods = 3 )
874+
875+ # reindexing to an invalid Categorical
876+ s = Series (['a' , 'b' , 'c' ],dtype = 'category' )
877+ result = s .reindex (index )
878+ expected = Series (Categorical (values = [np .nan ,np .nan ,np .nan ],levels = ['a' , 'b' , 'c' ]))
879+ expected .index = index
880+ tm .assert_series_equal (result , expected )
881+
882+ # partial reindexing
883+ expected = Series (Categorical (values = ['b' ,'c' ],levels = ['a' , 'b' , 'c' ]))
884+ expected .index = [1 ,2 ]
885+ result = s .reindex ([1 ,2 ])
886+ tm .assert_series_equal (result , expected )
887+
888+ expected = Series (Categorical (values = ['c' ,np .nan ],levels = ['a' , 'b' , 'c' ]))
889+ expected .index = [2 ,3 ]
890+ result = s .reindex ([2 ,3 ])
891+ tm .assert_series_equal (result , expected )
892+
893+
894+
850895 def test_sideeffects_free (self ):
851896
852897 # Passing a categorical to a Series and then changing values in either the series or the
0 commit comments