From 7b0664d63ff6a338e9af84bd143e7cf51d3f318d Mon Sep 17 00:00:00 2001 From: jamescobonkerr Date: Sat, 18 Apr 2020 12:32:34 +0100 Subject: [PATCH 1/4] TST: Groupby first/last/nth nan column test --- pandas/tests/groupby/test_nth.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pandas/tests/groupby/test_nth.py b/pandas/tests/groupby/test_nth.py index 947907caf5cbc..6d1f0f3b3ea7c 100644 --- a/pandas/tests/groupby/test_nth.py +++ b/pandas/tests/groupby/test_nth.py @@ -140,6 +140,18 @@ def test_first_last_nth_dtypes(df_mixed_floats): assert f.dtype == "int64" +def test_first_last_nth_nan_dtype(): + # GH 33591 + df = pd.DataFrame({"data": ["A"]}) + df["nans"] = df["data"].where(df["data"] != "A") + + grouped = df.groupby("data") + + assert grouped["nans"].first().dtype == object + assert grouped["nans"].last().dtype == object + assert grouped["nans"].nth(0).dtype == object + + def test_first_strings_timestamps(): # GH 11244 test = pd.DataFrame( From 3a603b944ec2e9f8ba3f261e4ff325589b53837b Mon Sep 17 00:00:00 2001 From: jamescobonkerr Date: Sat, 18 Apr 2020 21:04:26 +0100 Subject: [PATCH 2/4] Add nans column in constructor --- pandas/tests/groupby/test_nth.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pandas/tests/groupby/test_nth.py b/pandas/tests/groupby/test_nth.py index 6d1f0f3b3ea7c..fc3fb55ba51ac 100644 --- a/pandas/tests/groupby/test_nth.py +++ b/pandas/tests/groupby/test_nth.py @@ -142,8 +142,7 @@ def test_first_last_nth_dtypes(df_mixed_floats): def test_first_last_nth_nan_dtype(): # GH 33591 - df = pd.DataFrame({"data": ["A"]}) - df["nans"] = df["data"].where(df["data"] != "A") + df = pd.DataFrame({"data": ["A"], "nans": pd.Series([np.nan], dtype=object)}) grouped = df.groupby("data") From a432c92b149f3ddfe02b374842b996e6c35103d5 Mon Sep 17 00:00:00 2001 From: jamescobonkerr Date: Thu, 23 Apr 2020 14:47:36 +0100 Subject: [PATCH 3/4] Use assert_series_equal --- pandas/tests/groupby/test_nth.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pandas/tests/groupby/test_nth.py b/pandas/tests/groupby/test_nth.py index fc3fb55ba51ac..7104e01a8fc94 100644 --- a/pandas/tests/groupby/test_nth.py +++ b/pandas/tests/groupby/test_nth.py @@ -145,10 +145,10 @@ def test_first_last_nth_nan_dtype(): df = pd.DataFrame({"data": ["A"], "nans": pd.Series([np.nan], dtype=object)}) grouped = df.groupby("data") - - assert grouped["nans"].first().dtype == object - assert grouped["nans"].last().dtype == object - assert grouped["nans"].nth(0).dtype == object + expected = df.set_index("data").nans + tm.assert_series_equal(grouped.nans.first(), expected) + tm.assert_series_equal(grouped.nans.last(), expected) + tm.assert_series_equal(grouped.nans.nth(0), expected) def test_first_strings_timestamps(): From 407480749880a60f4bd0d216737b9242f315ef4b Mon Sep 17 00:00:00 2001 From: jamescobonkerr Date: Thu, 23 Apr 2020 19:10:27 +0100 Subject: [PATCH 4/4] Test nth(-1) --- pandas/tests/groupby/test_nth.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pandas/tests/groupby/test_nth.py b/pandas/tests/groupby/test_nth.py index 7104e01a8fc94..0cbfbad85a8b6 100644 --- a/pandas/tests/groupby/test_nth.py +++ b/pandas/tests/groupby/test_nth.py @@ -148,6 +148,7 @@ def test_first_last_nth_nan_dtype(): expected = df.set_index("data").nans tm.assert_series_equal(grouped.nans.first(), expected) tm.assert_series_equal(grouped.nans.last(), expected) + tm.assert_series_equal(grouped.nans.nth(-1), expected) tm.assert_series_equal(grouped.nans.nth(0), expected)