From 875a3c4a792c79815bd22d7f0a4aa42007502af8 Mon Sep 17 00:00:00 2001 From: Alexander Ponomaroff Date: Thu, 24 Jan 2019 23:21:49 -0500 Subject: [PATCH 1/3] Add tests for NaT when performing dt.to_period --- pandas/tests/series/test_period.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pandas/tests/series/test_period.py b/pandas/tests/series/test_period.py index 0a86bb0b67797..58a55a7142e69 100644 --- a/pandas/tests/series/test_period.py +++ b/pandas/tests/series/test_period.py @@ -164,3 +164,10 @@ def test_end_time_timevalues(self, input_vals): result = s.dt.end_time expected = s.apply(lambda x: x.end_time) tm.assert_series_equal(result, expected) + + def test_to_period(self): + series = pd.Series(['2001'], dtype='datetime64[ns]') + assert series.dt.to_period('D').dtype == 'Period[D]' + + series = pd.Series(['NaT'], dtype='datetime64[ns]') + assert series.dt.to_period('D').dtype == 'Period[D]' From 8cb340ad06b22c0dcc04a50625e46acd22d6c385 Mon Sep 17 00:00:00 2001 From: Alexander Ponomaroff Date: Fri, 25 Jan 2019 02:31:39 -0500 Subject: [PATCH 2/3] Parameterize the test and compare result to expected --- pandas/tests/series/test_period.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/pandas/tests/series/test_period.py b/pandas/tests/series/test_period.py index 58a55a7142e69..4471ad8330f82 100644 --- a/pandas/tests/series/test_period.py +++ b/pandas/tests/series/test_period.py @@ -165,9 +165,12 @@ def test_end_time_timevalues(self, input_vals): expected = s.apply(lambda x: x.end_time) tm.assert_series_equal(result, expected) - def test_to_period(self): - series = pd.Series(['2001'], dtype='datetime64[ns]') - assert series.dt.to_period('D').dtype == 'Period[D]' - - series = pd.Series(['NaT'], dtype='datetime64[ns]') - assert series.dt.to_period('D').dtype == 'Period[D]' + @pytest.mark.parametrize('input_vals, expected', [ + (Series(['2001'], dtype='datetime64[ns]'), + Series(['2001'], dtype='period[D]')), + (Series(['NaT'], dtype='datetime64[ns]'), + Series(['NaT'], dtype='period[D]')) + ]) + def test_to_period(self, input_vals, expected): + result = input_vals.dt.to_period('D') + tm.assert_series_equal(result, expected) From 3831f8641c2de6744e96db85e340c191813408aa Mon Sep 17 00:00:00 2001 From: Alexander Ponomaroff Date: Fri, 25 Jan 2019 14:50:58 -0500 Subject: [PATCH 3/3] Improve to_period test --- pandas/tests/series/test_period.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/pandas/tests/series/test_period.py b/pandas/tests/series/test_period.py index 4471ad8330f82..7e0feb418e8df 100644 --- a/pandas/tests/series/test_period.py +++ b/pandas/tests/series/test_period.py @@ -165,12 +165,11 @@ def test_end_time_timevalues(self, input_vals): expected = s.apply(lambda x: x.end_time) tm.assert_series_equal(result, expected) - @pytest.mark.parametrize('input_vals, expected', [ - (Series(['2001'], dtype='datetime64[ns]'), - Series(['2001'], dtype='period[D]')), - (Series(['NaT'], dtype='datetime64[ns]'), - Series(['NaT'], dtype='period[D]')) + @pytest.mark.parametrize('input_vals', [ + ('2001'), ('NaT') ]) - def test_to_period(self, input_vals, expected): - result = input_vals.dt.to_period('D') + def test_to_period(self, input_vals): + # GH 21205 + expected = Series([input_vals], dtype='Period[D]') + result = Series([input_vals], dtype='datetime64[ns]').dt.to_period('D') tm.assert_series_equal(result, expected)