@@ -840,13 +840,58 @@ def test_creation_astype(self):
840
840
df ["cats" ] = df ["cats" ].astype ("category" )
841
841
tm .assert_frame_equal (exp_df , df )
842
842
843
-
844
843
df = pd .DataFrame ({"cats" :['a' , 'b' , 'b' , 'a' , 'a' , 'd' ], "vals" :[1 ,2 ,3 ,4 ,5 ,6 ]})
845
844
cats = Categorical (['a' , 'b' , 'b' , 'a' , 'a' , 'd' ])
846
845
exp_df = pd .DataFrame ({"cats" :cats , "vals" :[1 ,2 ,3 ,4 ,5 ,6 ]})
847
846
df ["cats" ] = df ["cats" ].astype ("category" )
848
847
tm .assert_frame_equal (exp_df , df )
849
848
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
+
850
895
def test_sideeffects_free (self ):
851
896
852
897
# Passing a categorical to a Series and then changing values in either the series or the
0 commit comments