|
15 | 15 | from pandas.compat import lrange, product, PY35
|
16 | 16 | from pandas import (compat, isna, notna, DataFrame, Series,
|
17 | 17 | MultiIndex, date_range, Timestamp, Categorical,
|
18 |
| - _np_version_under1p12, _np_version_under1p15) |
| 18 | + _np_version_under1p12, _np_version_under1p15, |
| 19 | + to_datetime, to_timedelta) |
19 | 20 | import pandas as pd
|
20 | 21 | import pandas.core.nanops as nanops
|
21 | 22 | import pandas.core.algorithms as algorithms
|
@@ -889,6 +890,40 @@ def test_mode(self):
|
889 | 890 | dtype=df["C"].dtype)})
|
890 | 891 | tm.assert_frame_equal(df.mode(), exp)
|
891 | 892 |
|
| 893 | + def test_mode_dropna(self): |
| 894 | + # GH 17534 |
| 895 | + # Test the dropna=False parameter for mode |
| 896 | + |
| 897 | + df = pd.DataFrame({"A": [1, np.nan, np.nan, np.nan], |
| 898 | + "B": [np.nan, np.nan, 'a', np.nan], |
| 899 | + "C": Categorical([np.nan, np.nan, 'a', np.nan]), |
| 900 | + "D": to_datetime(['NaT', '2000-1-2', 'NaT', 'NaT']), |
| 901 | + "E": to_timedelta(['1 days', 'nan', 'nan', 'nan']), |
| 902 | + "F": [1, 1, np.nan, np.nan], |
| 903 | + "G": [np.nan, np.nan, 'a', 'a'], |
| 904 | + "H": Categorical(['a', np.nan, 'a', np.nan]), |
| 905 | + "I": to_datetime(['2000-1-2', '2000-1-2', |
| 906 | + 'NaT', 'NaT']), |
| 907 | + "J": to_timedelta(['1 days', 'nan', |
| 908 | + '1 days', 'nan'])}) |
| 909 | + |
| 910 | + result = df.loc[:, 'A':'E'].mode(dropna=False) |
| 911 | + expected = pd.DataFrame({'A': [np.nan], |
| 912 | + 'B': np.array([np.nan], dtype=object), |
| 913 | + 'C': Categorical([np.nan], categories=['a']), |
| 914 | + 'D': [pd.NaT], |
| 915 | + 'E': to_timedelta([pd.NaT])}) |
| 916 | + tm.assert_frame_equal(result, expected) |
| 917 | + |
| 918 | + result = df.loc[:, 'F':'J'].mode(dropna=False) |
| 919 | + expected = pd.DataFrame({'F': [1, np.nan], |
| 920 | + 'G': [np.nan, 'a'], |
| 921 | + 'H': Categorical([np.nan, 'a'], |
| 922 | + categories=['a']), |
| 923 | + 'I': to_datetime(['NaT', '2000-1-2']), |
| 924 | + 'J': to_timedelta(['nan', '1 days'])}) |
| 925 | + tm.assert_frame_equal(result, expected) |
| 926 | + |
892 | 927 | def test_operators_timedelta64(self):
|
893 | 928 | from datetime import timedelta
|
894 | 929 | df = DataFrame(dict(A=date_range('2012-1-1', periods=3, freq='D'),
|
|
0 commit comments