From 888fd82bf9b8bd5762cd47fb7c5ac4f9b7084157 Mon Sep 17 00:00:00 2001 From: Neal Muppidi Date: Fri, 26 Aug 2022 20:41:02 -0500 Subject: [PATCH 1/6] add tests outlined in GH29709 --- pandas/tests/indexing/test_at.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pandas/tests/indexing/test_at.py b/pandas/tests/indexing/test_at.py index 96c73b007cef3..5e018ab074c73 100644 --- a/pandas/tests/indexing/test_at.py +++ b/pandas/tests/indexing/test_at.py @@ -13,6 +13,8 @@ MultiIndex, Series, Timestamp, + to_datetime, + DatetimeIndex, ) import pandas._testing as tm @@ -97,6 +99,18 @@ def test_at_setitem_categorical_missing(self): tm.assert_frame_equal(df, expected) + @pytest.mark.parametrize("row", (to_datetime('2019-01-01'), '2019-01-01')) + def test_at_datetime_index(self, row): + df = DataFrame( + data=[[1] * 2] * 2, + columns=['one', 'two'], + index=DatetimeIndex(data=["2019-01-01", "2019-01-02"]), + ) + + df.at[row, 'one'] = 0.5 + assert df.at[row, 'one'] == 0.5 + assert df['one'].dtype == 'float64' + def test_at_setitem_multiindex(self): df = DataFrame( np.zeros((3, 2), dtype="int64"), From df8c5d130a4d23656a67dcb6dc8638f6644a83be Mon Sep 17 00:00:00 2001 From: Neal Muppidi Date: Sat, 27 Aug 2022 20:19:06 -0500 Subject: [PATCH 2/6] fix styling error caught by github actions --- pandas/tests/indexing/test_at.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pandas/tests/indexing/test_at.py b/pandas/tests/indexing/test_at.py index 5e018ab074c73..65ca8885a2f33 100644 --- a/pandas/tests/indexing/test_at.py +++ b/pandas/tests/indexing/test_at.py @@ -10,11 +10,11 @@ CategoricalDtype, CategoricalIndex, DataFrame, + DatetimeIndex, MultiIndex, Series, Timestamp, to_datetime, - DatetimeIndex, ) import pandas._testing as tm @@ -99,17 +99,17 @@ def test_at_setitem_categorical_missing(self): tm.assert_frame_equal(df, expected) - @pytest.mark.parametrize("row", (to_datetime('2019-01-01'), '2019-01-01')) + @pytest.mark.parametrize("row", (to_datetime("2019-01-01"), "2019-01-01")) def test_at_datetime_index(self, row): df = DataFrame( data=[[1] * 2] * 2, - columns=['one', 'two'], + columns=["one", "two"], index=DatetimeIndex(data=["2019-01-01", "2019-01-02"]), ) - df.at[row, 'one'] = 0.5 - assert df.at[row, 'one'] == 0.5 - assert df['one'].dtype == 'float64' + df.at[row, "one"] = 0.5 + assert df.at[row, "one"] == 0.5 + assert df["one"].dtype == "float64" def test_at_setitem_multiindex(self): df = DataFrame( From 26a658a27422c47f691731339cc2c49d7f855e98 Mon Sep 17 00:00:00 2001 From: Neal Muppidi Date: Sun, 28 Aug 2022 16:18:53 -0500 Subject: [PATCH 3/6] made changes based on suggestions from patrick --- pandas/tests/indexing/test_at.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/pandas/tests/indexing/test_at.py b/pandas/tests/indexing/test_at.py index 65ca8885a2f33..f8d8e511c6a4d 100644 --- a/pandas/tests/indexing/test_at.py +++ b/pandas/tests/indexing/test_at.py @@ -99,17 +99,13 @@ def test_at_setitem_categorical_missing(self): tm.assert_frame_equal(df, expected) - @pytest.mark.parametrize("row", (to_datetime("2019-01-01"), "2019-01-01")) + @pytest.mark.parametrize("row", (Timestamp("2019-01-01"), to_datetime("2019-01-01"), "2019-01-01")) def test_at_datetime_index(self, row): - df = DataFrame( - data=[[1] * 2] * 2, - columns=["one", "two"], - index=DatetimeIndex(data=["2019-01-01", "2019-01-02"]), - ) + df = DataFrame(data=[[1] * 2], index=DatetimeIndex(data=["2019-01-01", "2019-01-02"])) + expected = DataFrame(data=[[0.5, 1], [1.0, 1]], index=DatetimeIndex(data=["2019-01-01", "2019-01-02"])) - df.at[row, "one"] = 0.5 - assert df.at[row, "one"] == 0.5 - assert df["one"].dtype == "float64" + df.at[row, 0] = 0.5 + tm.assert_frame_equal(df, expected) def test_at_setitem_multiindex(self): df = DataFrame( From 9853f0e709ec20f790feb81df40b311c1cb06761 Mon Sep 17 00:00:00 2001 From: Neal Muppidi Date: Sun, 28 Aug 2022 16:22:44 -0500 Subject: [PATCH 4/6] fix pep8 mistakes --- pandas/tests/indexing/test_at.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/pandas/tests/indexing/test_at.py b/pandas/tests/indexing/test_at.py index f8d8e511c6a4d..9d9e111e1727d 100644 --- a/pandas/tests/indexing/test_at.py +++ b/pandas/tests/indexing/test_at.py @@ -99,10 +99,20 @@ def test_at_setitem_categorical_missing(self): tm.assert_frame_equal(df, expected) - @pytest.mark.parametrize("row", (Timestamp("2019-01-01"), to_datetime("2019-01-01"), "2019-01-01")) + @pytest.mark.parametrize("row", + (Timestamp("2019-01-01"), + to_datetime("2019-01-01"), + "2019-01-01") + ) def test_at_datetime_index(self, row): - df = DataFrame(data=[[1] * 2], index=DatetimeIndex(data=["2019-01-01", "2019-01-02"])) - expected = DataFrame(data=[[0.5, 1], [1.0, 1]], index=DatetimeIndex(data=["2019-01-01", "2019-01-02"])) + df = DataFrame( + data=[[1] * 2], + index=DatetimeIndex(data=["2019-01-01", "2019-01-02"]) + ) + expected = DataFrame( + data=[[0.5, 1], [1.0, 1]], + index=DatetimeIndex(data=["2019-01-01", "2019-01-02"]) + ) df.at[row, 0] = 0.5 tm.assert_frame_equal(df, expected) From e4488b3879ca23bbf6ac6fd5db86c1923e783e54 Mon Sep 17 00:00:00 2001 From: Neal Muppidi Date: Mon, 29 Aug 2022 13:40:04 -0500 Subject: [PATCH 5/6] remove usage of to_datetime() --- pandas/tests/indexing/test_at.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/pandas/tests/indexing/test_at.py b/pandas/tests/indexing/test_at.py index 9d9e111e1727d..66e34dcecc84c 100644 --- a/pandas/tests/indexing/test_at.py +++ b/pandas/tests/indexing/test_at.py @@ -14,7 +14,6 @@ MultiIndex, Series, Timestamp, - to_datetime, ) import pandas._testing as tm @@ -99,11 +98,7 @@ def test_at_setitem_categorical_missing(self): tm.assert_frame_equal(df, expected) - @pytest.mark.parametrize("row", - (Timestamp("2019-01-01"), - to_datetime("2019-01-01"), - "2019-01-01") - ) + @pytest.mark.parametrize("row", (Timestamp("2019-01-01"), "2019-01-01")) def test_at_datetime_index(self, row): df = DataFrame( data=[[1] * 2], From 084597bc7d2cc5f93b7e729407d2b8a6106c7c55 Mon Sep 17 00:00:00 2001 From: Neal Muppidi Date: Tue, 30 Aug 2022 21:15:48 -0500 Subject: [PATCH 6/6] fix error in pre-commit checks also move my new test to the bottom of the class since it was not put in the right place before --- pandas/tests/indexing/test_at.py | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/pandas/tests/indexing/test_at.py b/pandas/tests/indexing/test_at.py index 66e34dcecc84c..96b4158ff7c94 100644 --- a/pandas/tests/indexing/test_at.py +++ b/pandas/tests/indexing/test_at.py @@ -98,20 +98,6 @@ def test_at_setitem_categorical_missing(self): tm.assert_frame_equal(df, expected) - @pytest.mark.parametrize("row", (Timestamp("2019-01-01"), "2019-01-01")) - def test_at_datetime_index(self, row): - df = DataFrame( - data=[[1] * 2], - index=DatetimeIndex(data=["2019-01-01", "2019-01-02"]) - ) - expected = DataFrame( - data=[[0.5, 1], [1.0, 1]], - index=DatetimeIndex(data=["2019-01-01", "2019-01-02"]) - ) - - df.at[row, 0] = 0.5 - tm.assert_frame_equal(df, expected) - def test_at_setitem_multiindex(self): df = DataFrame( np.zeros((3, 2), dtype="int64"), @@ -124,6 +110,19 @@ def test_at_setitem_multiindex(self): ) tm.assert_frame_equal(df, expected) + @pytest.mark.parametrize("row", (Timestamp("2019-01-01"), "2019-01-01")) + def test_at_datetime_index(self, row): + df = DataFrame( + data=[[1] * 2], index=DatetimeIndex(data=["2019-01-01", "2019-01-02"]) + ) + expected = DataFrame( + data=[[0.5, 1], [1.0, 1]], + index=DatetimeIndex(data=["2019-01-01", "2019-01-02"]), + ) + + df.at[row, 0] = 0.5 + tm.assert_frame_equal(df, expected) + class TestAtSetItemWithExpansion: def test_at_setitem_expansion_series_dt64tz_value(self, tz_naive_fixture):