Skip to content

Commit c7a149c

Browse files
anzoranzor
authored andcommitted
Used @pytest.mark.parametrize in tests, added whatsnew
1 parent dbc9643 commit c7a149c

File tree

2 files changed

+52
-39
lines changed

2 files changed

+52
-39
lines changed

doc/source/whatsnew/v3.0.0.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -665,7 +665,7 @@ Indexing
665665
^^^^^^^^
666666
- Bug in :meth:`DataFrame.__getitem__` returning modified columns when called with ``slice`` in Python 3.12 (:issue:`57500`)
667667
- Bug in :meth:`DataFrame.from_records` throwing a ``ValueError`` when passed an empty list in ``index`` (:issue:`58594`)
668-
-
668+
- Fixed bug in :meth:`DataFrame.loc` with inconsistent behavior of loc-set with 2 given indexes to Series (:issue:`599333`)
669669

670670
Missing
671671
^^^^^^^

pandas/tests/indexing/test_loc.py

Lines changed: 51 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -3298,42 +3298,55 @@ def test_loc_reindexing_of_empty_index(self):
32983298
expected = DataFrame(index=[1, 1, 2, 2], data=["1", "1", "2", "2"])
32993299
tm.assert_frame_equal(df, expected)
33003300

3301-
def test_loc_set_series_to_multiple_columns(self):
3301+
@pytest.mark.parametrize(
3302+
"df, row_index, col_index, setting_series, expected_df",
3303+
[
3304+
[
3305+
DataFrame([[1, 2, 3], [4, 5, 6]], columns=list("ABC")),
3306+
slice(0, 3),
3307+
["A", "B", "C"],
3308+
Series([10, 20, 30]),
3309+
DataFrame([[10, 10, 10], [20, 20, 20]], columns=list("ABC")),
3310+
],
3311+
[
3312+
DataFrame([[1, 2, 3], [4, 5, 6]], columns=list("ABC")),
3313+
slice(None),
3314+
["A", "B", "C"],
3315+
Series([10, 20, 30]),
3316+
DataFrame([[10, 10, 10], [20, 20, 20]], columns=list("ABC")),
3317+
],
3318+
[
3319+
DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=list("ABC")),
3320+
[True, True, True],
3321+
["A", "B", "C"],
3322+
Series([10, 20, 30]),
3323+
DataFrame(
3324+
[[10, 10, 10], [20, 20, 20], [30, 30, 30]], columns=list("ABC")
3325+
),
3326+
],
3327+
[
3328+
DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=list("ABC")),
3329+
slice(0, 4),
3330+
["A", "B", "C"],
3331+
Series([10, 20, 30]),
3332+
DataFrame(
3333+
[[10, 10, 10], [20, 20, 20], [30, 30, 30]], columns=list("ABC")
3334+
),
3335+
],
3336+
[
3337+
DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=list("ABC")),
3338+
slice(None),
3339+
slice("A", "C"),
3340+
Series([10, 20, 30]),
3341+
DataFrame(
3342+
[[10, 10, 10], [20, 20, 20], [30, 30, 30]], columns=list("ABC")
3343+
),
3344+
],
3345+
],
3346+
)
3347+
def test_loc_set_series_to_multiple_columns(
3348+
self, df, row_index, col_index, setting_series, expected_df
3349+
):
33023350
# GH 59933
3303-
df = DataFrame([[1, 2, 3], [4, 5, 6]], columns=list("ABC"))
3304-
df.loc[0:3, ["A", "B", "C"]] = Series([10, 20, 30])
3305-
expected = DataFrame([[10, 10, 10], [20, 20, 20]], columns=list("ABC"))
3306-
tm.assert_frame_equal(df, expected)
3307-
3308-
df = DataFrame([[1, 2, 3], [4, 5, 6]], columns=list("ABC"))
3309-
df.loc[:, ["A", "B", "C"]] = Series([10, 20, 30])
3310-
expected = DataFrame([[10, 10, 10], [20, 20, 20]], columns=list("ABC"))
3311-
tm.assert_frame_equal(df, expected)
3312-
3313-
df = DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=list("ABC"))
3314-
df.loc[df["A"] > 0, ["A", "B", "C"]] = Series([10, 20, 30])
3315-
expected = DataFrame(
3316-
[[10, 10, 10], [20, 20, 20], [30, 30, 30]], columns=list("ABC")
3317-
)
3318-
tm.assert_frame_equal(df, expected)
3319-
3320-
df = DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=list("ABC"))
3321-
df.loc[:, ["A", "B", "C"]] = Series([10, 20, 30])
3322-
expected = DataFrame(
3323-
[[10, 10, 10], [20, 20, 20], [30, 30, 30]], columns=list("ABC")
3324-
)
3325-
tm.assert_frame_equal(df, expected)
3326-
3327-
df = DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=list("ABC"))
3328-
df.loc[0:4, ["A", "B", "C"]] = Series([10, 20, 30])
3329-
expected = DataFrame(
3330-
[[10, 10, 10], [20, 20, 20], [30, 30, 30]], columns=list("ABC")
3331-
)
3332-
tm.assert_frame_equal(df, expected)
3333-
3334-
df = DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=list("ABC"))
3335-
df.loc[:, "A":"C"] = Series([10, 20, 30])
3336-
expected = DataFrame(
3337-
[[10, 10, 10], [20, 20, 20], [30, 30, 30]], columns=list("ABC")
3338-
)
3339-
tm.assert_frame_equal(df, expected)
3351+
df.loc[row_index, col_index] = setting_series
3352+
tm.assert_frame_equal(df, expected_df)

0 commit comments

Comments
 (0)