@@ -858,44 +858,55 @@ def wrapper(x):
858858 (True , {'H' : [8 , 9 , np .nan , np .nan ],
859859 'I' : [8 , 9 , np .nan , np .nan ],
860860 '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 ],
863862 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 ]}),
867866 (False , {'H' : [8 , 9 , np .nan , np .nan ],
868867 'I' : [8 , 9 , np .nan , np .nan ],
869868 '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 ],
872870 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 ]})
876874 ])
877875 def test_mode_dropna (self , dropna , expected ):
878876
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' )})
896893
897894 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+
899910 tm .assert_frame_equal (result , expected )
900911
901912 def test_operators_timedelta64 (self ):
0 commit comments