@@ -889,6 +889,59 @@ def test_union_categorical(self):
889
889
with tm .assertRaises (ValueError ):
890
890
union_categoricals ([])
891
891
892
+ def test_union_categoricals_nan (self ):
893
+ # GH 13759
894
+ res = union_categoricals ([pd .Categorical ([1 , 2 , np .nan ]),
895
+ pd .Categorical ([3 , 2 , np .nan ])])
896
+ exp = Categorical ([1 , 2 , np .nan , 3 , 2 , np .nan ])
897
+ tm .assert_categorical_equal (res , exp )
898
+
899
+ res = union_categoricals ([pd .Categorical (['A' , 'B' ]),
900
+ pd .Categorical (['B' , 'B' , np .nan ])])
901
+ exp = Categorical (['A' , 'B' , 'B' , 'B' , np .nan ])
902
+ tm .assert_categorical_equal (res , exp )
903
+
904
+ val1 = [pd .Timestamp ('2011-01-01' ), pd .Timestamp ('2011-03-01' ),
905
+ pd .NaT ]
906
+ val2 = [pd .NaT , pd .Timestamp ('2011-01-01' ),
907
+ pd .Timestamp ('2011-02-01' )]
908
+
909
+ res = union_categoricals ([pd .Categorical (val1 ), pd .Categorical (val2 )])
910
+ exp = Categorical (val1 + val2 ,
911
+ categories = [pd .Timestamp ('2011-01-01' ),
912
+ pd .Timestamp ('2011-03-01' ),
913
+ pd .Timestamp ('2011-02-01' )])
914
+ tm .assert_categorical_equal (res , exp )
915
+
916
+ # all NaN
917
+ res = union_categoricals ([pd .Categorical ([np .nan , np .nan ]),
918
+ pd .Categorical (['X' ])])
919
+ exp = Categorical ([np .nan , np .nan , 'X' ])
920
+ tm .assert_categorical_equal (res , exp )
921
+
922
+ res = union_categoricals ([pd .Categorical ([np .nan , np .nan ]),
923
+ pd .Categorical ([np .nan , np .nan ])])
924
+ exp = Categorical ([np .nan , np .nan , np .nan , np .nan ])
925
+ tm .assert_categorical_equal (res , exp )
926
+
927
+ def test_union_categoricals_empty (self ):
928
+ # GH 13759
929
+ res = union_categoricals ([pd .Categorical ([]),
930
+ pd .Categorical ([])])
931
+ exp = Categorical ([])
932
+ tm .assert_categorical_equal (res , exp )
933
+
934
+ res = union_categoricals ([pd .Categorical ([]),
935
+ pd .Categorical ([1.0 ])])
936
+ exp = Categorical ([1.0 ])
937
+ tm .assert_categorical_equal (res , exp )
938
+
939
+ # to make dtype equal
940
+ nanc = pd .Categorical (np .array ([np .nan ], dtype = np .float64 ))
941
+ res = union_categoricals ([nanc ,
942
+ pd .Categorical ([])])
943
+ tm .assert_categorical_equal (res , nanc )
944
+
892
945
def test_concat_bug_1719 (self ):
893
946
ts1 = tm .makeTimeSeries ()
894
947
ts2 = tm .makeTimeSeries ()[::2 ]
0 commit comments