Skip to content

Commit 37bd0fd

Browse files
authored
REGR: pivot changing index name of input object (#52630)
1 parent 32ea575 commit 37bd0fd

File tree

3 files changed

+10
-0
lines changed

3 files changed

+10
-0
lines changed

doc/source/whatsnew/v2.0.1.rst

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ Fixed regressions
1717
- Fixed regression in :meth:`Series.describe` showing ``RuntimeWarning`` for extension dtype :class:`Series` with one element (:issue:`52515`)
1818
- Fixed regression in :meth:`DataFrame.sort_values` not resetting index when :class:`DataFrame` is already sorted and ``ignore_index=True`` (:issue:`52553`)
1919
- Fixed regression in :meth:`MultiIndex.isin` raising ``TypeError`` for ``Generator`` (:issue:`52568`)
20+
- Fixed regression in :meth:`DataFrame.pivot` changing :class:`Index` name of input object (:issue:`52629`)
2021

2122
.. ---------------------------------------------------------------------------
2223
.. _whatsnew_201.bug_fixes:

pandas/core/reshape/pivot.py

+2
Original file line numberDiff line numberDiff line change
@@ -519,6 +519,8 @@ def pivot(
519519
# If columns is None we will create a MultiIndex level with None as name
520520
# which might cause duplicated names because None is the default for
521521
# level names
522+
data = data.copy(deep=False)
523+
data.index = data.index.copy()
522524
data.index.names = [
523525
name if name is not None else lib.NoDefault for name in data.index.names
524526
]

pandas/tests/reshape/test_pivot.py

+7
Original file line numberDiff line numberDiff line change
@@ -2591,3 +2591,10 @@ def test_pivot_values_is_none(self):
25912591
result = df.pivot(columns="b", values=None)
25922592
expected = DataFrame(1, index=[0], columns=Index([2], name="b"))
25932593
tm.assert_frame_equal(result, expected)
2594+
2595+
def test_pivot_not_changing_index_name(self):
2596+
# GH#52692
2597+
df = DataFrame({"one": ["a"], "two": 0, "three": 1})
2598+
expected = df.copy(deep=True)
2599+
df.pivot(index="one", columns="two", values="three")
2600+
tm.assert_frame_equal(df, expected)

0 commit comments

Comments
 (0)