@@ -858,44 +858,55 @@ def wrapper(x):
858
858
(True , {'H' : [8 , 9 , np .nan , np .nan ],
859
859
'I' : [8 , 9 , np .nan , np .nan ],
860
860
'J' : [1 , np .nan , np .nan , np .nan ],
861
- 'K' : ['a' , np .nan , np .nan , np .nan ],
862
- 'L' : Categorical (['a' , np .nan , np .nan , np .nan ],
861
+ 'K' : Categorical (['a' , np .nan , np .nan , np .nan ],
863
862
categories = ['a' ]),
864
- 'M ' : to_datetime (['2000-1-2' , 'NaT' , 'NaT' , 'NaT' ]),
865
- 'N ' : to_timedelta (['1 days' , 'nan' , 'nan' , 'nan' ]),
866
- 'O ' : [0 , 1 , 2 , 3 ]}),
863
+ 'L ' : to_datetime (['2000-1-2' , 'NaT' , 'NaT' , 'NaT' ]),
864
+ 'M ' : to_timedelta (['1 days' , 'nan' , 'nan' , 'nan' ]),
865
+ 'N ' : [0 , 1 , 2 , 3 ]}),
867
866
(False , {'H' : [8 , 9 , np .nan , np .nan ],
868
867
'I' : [8 , 9 , np .nan , np .nan ],
869
868
'J' : [1 , np .nan , np .nan , np .nan ],
870
- 'K' : [np .nan , 'a' , np .nan , np .nan ],
871
- 'L' : Categorical ([np .nan , 'a' , np .nan , np .nan ],
869
+ 'K' : Categorical ([np .nan , 'a' , np .nan , np .nan ],
872
870
categories = ['a' ]),
873
- 'M ' : to_datetime (['NaT' , '2000-1-2' , 'NaT' , 'NaT' ]),
874
- 'N ' : to_timedelta (['nan' , '1 days' , 'nan' , 'nan' ]),
875
- 'O ' : [0 , 1 , 2 , 3 ]})
871
+ 'L ' : to_datetime (['NaT' , '2000-1-2' , 'NaT' , 'NaT' ]),
872
+ 'M ' : to_timedelta (['nan' , '1 days' , 'nan' , 'nan' ]),
873
+ 'N ' : [0 , 1 , 2 , 3 ]})
876
874
])
877
875
def test_mode_dropna (self , dropna , expected ):
878
876
879
- df = pd .DataFrame ({"A" : [12 , 12 , 19 , 11 ],
880
- "B" : [10 , 10 , np .nan , 3 ],
881
- "C" : [1 , np .nan , np .nan , np .nan ],
882
- "D" : [np .nan , np .nan , 'a' , np .nan ],
883
- "E" : Categorical ([np .nan , np .nan , 'a' , np .nan ]),
884
- "F" : to_datetime (['NaT' , '2000-1-2' , 'NaT' , 'NaT' ]),
885
- "G" : to_timedelta (['1 days' , 'nan' , 'nan' , 'nan' ]),
886
- "H" : [8 , 8 , 9 , 9 ],
887
- "I" : [9 , 9 , 8 , 8 ],
888
- "J" : [1 , 1 , np .nan , np .nan ],
889
- "K" : [np .nan , np .nan , 'a' , 'a' ],
890
- "L" : Categorical (['a' , np .nan , 'a' , np .nan ]),
891
- "M" : to_datetime (['2000-1-2' , '2000-1-2' ,
892
- 'NaT' , 'NaT' ]),
893
- "N" : to_timedelta (['1 days' , 'nan' ,
894
- '1 days' , 'nan' ]),
895
- "O" : np .arange (4 , dtype = 'int64' )})
877
+ df = DataFrame ({"A" : [12 , 12 , 19 , 11 ],
878
+ "B" : [10 , 10 , np .nan , 3 ],
879
+ "C" : [1 , np .nan , np .nan , np .nan ],
880
+ "D" : [np .nan , np .nan , 'a' , np .nan ],
881
+ "E" : Categorical ([np .nan , np .nan , 'a' , np .nan ]),
882
+ "F" : to_datetime (['NaT' , '2000-1-2' , 'NaT' , 'NaT' ]),
883
+ "G" : to_timedelta (['1 days' , 'nan' , 'nan' , 'nan' ]),
884
+ "H" : [8 , 8 , 9 , 9 ],
885
+ "I" : [9 , 9 , 8 , 8 ],
886
+ "J" : [1 , 1 , np .nan , np .nan ],
887
+ "K" : Categorical (['a' , np .nan , 'a' , np .nan ]),
888
+ "L" : to_datetime (['2000-1-2' , '2000-1-2' ,
889
+ 'NaT' , 'NaT' ]),
890
+ "M" : to_timedelta (['1 days' , 'nan' ,
891
+ '1 days' , 'nan' ]),
892
+ "N" : np .arange (4 , dtype = 'int64' )})
896
893
897
894
result = df [sorted (list (expected .keys ()))].mode (dropna = dropna )
898
- expected = pd .DataFrame (expected )
895
+ expected = DataFrame (expected )
896
+ tm .assert_frame_equal (result , expected )
897
+
898
+ @pytest .mark .skipif (not compat .PY3 , reason = "only PY3" )
899
+ def test_mode_sortwarning (self ):
900
+ # Check for the warning that is raised when the mode
901
+ # results cannot be sorted
902
+
903
+ df = DataFrame ({"A" : [np .nan , np .nan , 'a' , 'a' ]})
904
+ expected = DataFrame ({'A' : ['a' , np .nan ]})
905
+
906
+ with tm .assert_produces_warning (UserWarning , check_stacklevel = False ):
907
+ result = df .mode (dropna = False )
908
+ result = result .sort_values (by = 'A' ).reset_index (drop = True )
909
+
899
910
tm .assert_frame_equal (result , expected )
900
911
901
912
def test_operators_timedelta64 (self ):
0 commit comments