Skip to content

Commit 603a733

Browse files
Merge branch 'main' into add_prefix_feature
2 parents cce8b4f + 95624ca commit 603a733

File tree

5 files changed

+14
-9
lines changed

5 files changed

+14
-9
lines changed

doc/source/whatsnew/v2.3.4.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ including other versions of pandas.
1313
Bug fixes
1414
^^^^^^^^^
1515
- Bug in :meth:`DataFrame.__getitem__` returning modified columns when called with ``slice`` in Python 3.12 (:issue:`57500`)
16+
- Bug in :meth:`Series.str.replace` raising an error on valid group references (``\1``, ``\2``, etc.) on series converted to PyArrow backend dtype (:issue:`62653`)
1617

1718
.. ---------------------------------------------------------------------------
1819
.. _whatsnew_234.contributors:

doc/source/whatsnew/v3.0.0.rst

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1124,7 +1124,6 @@ Conversion
11241124
Strings
11251125
^^^^^^^
11261126
- Bug in :meth:`Series.str.match` failing to raise when given a compiled ``re.Pattern`` object and conflicting ``case`` or ``flags`` arguments (:issue:`62240`)
1127-
- Bug in :meth:`Series.str.replace` raising an error on valid group references (``\1``, ``\2``, etc.) on series converted to PyArrow backend dtype (:issue:`62653`)
11281127
- Bug in :meth:`Series.str.zfill` raising ``AttributeError`` for :class:`ArrowDtype` (:issue:`61485`)
11291128
- Bug in :meth:`Series.value_counts` would not respect ``sort=False`` for series having ``string`` dtype (:issue:`55224`)
11301129
- Bug in multiplication with a :class:`StringDtype` incorrectly allowing multiplying by bools; explicitly cast to integers instead (:issue:`62595`)

pandas/_libs/internals.pyx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1006,8 +1006,12 @@ cdef class BlockValuesRefs:
10061006

10071007
cdef extern from "Python.h":
10081008
"""
1009+
// python version < 3.14
10091010
#if PY_VERSION_HEX < 0x030E0000
1010-
int __Pyx_PyUnstable_Object_IsUniqueReferencedTemporary(PyObject *ref);
1011+
// This function is unused and is declared to avoid a build warning
1012+
int __Pyx_PyUnstable_Object_IsUniqueReferencedTemporary(PyObject *ref) {
1013+
return Py_REFCNT(ref) == 1;
1014+
}
10111015
#else
10121016
#define __Pyx_PyUnstable_Object_IsUniqueReferencedTemporary \
10131017
PyUnstable_Object_IsUniqueReferencedTemporary

pandas/core/arrays/datetimelike.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2342,6 +2342,9 @@ def _with_freq(self, freq) -> Self:
23422342

23432343
def _values_for_json(self) -> np.ndarray:
23442344
# Small performance bump vs the base class which calls np.asarray(self)
2345+
if self.unit != "ns":
2346+
# GH#55827
2347+
return self.as_unit("ns")._values_for_json()
23452348
if isinstance(self.dtype, np.dtype):
23462349
return self._ndarray
23472350
return super()._values_for_json()

pandas/tests/io/json/test_pandas.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -135,12 +135,6 @@ def test_frame_non_unique_index_raises(self, orient):
135135
],
136136
)
137137
def test_frame_non_unique_columns(self, orient, data, request):
138-
if isinstance(data[0][0], Timestamp) and orient == "split":
139-
mark = pytest.mark.xfail(
140-
reason="GH#55827 non-nanosecond dt64 fails to round-trip"
141-
)
142-
request.applymarker(mark)
143-
144138
df = DataFrame(data, index=[1, 2], columns=["x", "x"])
145139

146140
expected_warning = None
@@ -162,10 +156,14 @@ def test_frame_non_unique_columns(self, orient, data, request):
162156
# in milliseconds; these are internally stored in nanosecond,
163157
# so divide to get where we need
164158
# TODO: a to_epoch method would also solve; see GH 14772
165-
expected.isetitem(0, expected.iloc[:, 0].astype(np.int64) // 1000000)
159+
dta = expected.iloc[:, 0]._values
160+
dta = dta.as_unit("ns") # GH#55827
161+
expected.isetitem(0, dta.astype(np.int64) // 1_000_000)
166162
elif orient == "split":
167163
expected = df
168164
expected.columns = ["x", "x.1"]
165+
if expected["x"].dtype.kind == "M":
166+
expected["x"] = expected["x"].astype("M8[ns]") # GH#55827
169167

170168
tm.assert_frame_equal(result, expected)
171169

0 commit comments

Comments
 (0)