Skip to content

Commit f82bc3e

Browse files
authored
ENH: Add lazy copy for sort_index (#50491)
1 parent c4a84ab commit f82bc3e

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

pandas/core/generic.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -4941,7 +4941,7 @@ def sort_index(
49414941
if inplace:
49424942
result = self
49434943
else:
4944-
result = self.copy()
4944+
result = self.copy(deep=None)
49454945

49464946
if ignore_index:
49474947
result.index = default_index(len(self))

pandas/tests/copy_view/test_methods.py

+17
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,23 @@ def test_reindex_like(using_copy_on_write):
407407
tm.assert_frame_equal(df, df_orig)
408408

409409

410+
def test_sort_index(using_copy_on_write):
411+
# GH 49473
412+
ser = Series([1, 2, 3])
413+
ser_orig = ser.copy()
414+
ser2 = ser.sort_index()
415+
416+
if using_copy_on_write:
417+
assert np.shares_memory(ser.values, ser2.values)
418+
else:
419+
assert not np.shares_memory(ser.values, ser2.values)
420+
421+
# mutating ser triggers a copy-on-write for the column / block
422+
ser2.iloc[0] = 0
423+
assert not np.shares_memory(ser2.values, ser.values)
424+
tm.assert_series_equal(ser, ser_orig)
425+
426+
410427
def test_reorder_levels(using_copy_on_write):
411428
index = MultiIndex.from_tuples(
412429
[(1, 1), (1, 2), (2, 1), (2, 2)], names=["one", "two"]

0 commit comments

Comments
 (0)