Skip to content

Commit 12ce6ce

Browse files
Merge branch 'main' into fix-merge-suffixes-61402
2 parents 04a4d07 + 05f032c commit 12ce6ce

18 files changed

+44
-136
lines changed

asv_bench/asv.conf.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
// followed by the pip installed packages).
4343
"matrix": {
4444
"pip+build": [],
45-
"Cython": ["3.0"],
45+
"Cython": [],
4646
"matplotlib": [],
4747
"sqlalchemy": [],
4848
"scipy": [],

ci/deps/actions-310-minimum_versions.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ dependencies:
88

99
# build dependencies
1010
- versioneer
11-
- cython>=0.29.33
11+
- cython<4.0.0a0
1212
- meson=1.2.1
1313
- meson-python=0.13.1
1414

ci/deps/actions-310.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ dependencies:
66

77
# build dependencies
88
- versioneer
9-
- cython>=0.29.33
9+
- cython<4.0.0a0
1010
- meson=1.2.1
1111
- meson-python=0.13.1
1212

ci/deps/actions-311-downstream_compat.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ dependencies:
77

88
# build dependencies
99
- versioneer
10-
- cython>=0.29.33
10+
- cython<4.0.0a0
1111
- meson=1.2.1
1212
- meson-python=0.13.1
1313

ci/deps/actions-311-numpydev.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ dependencies:
88
- versioneer
99
- meson=1.2.1
1010
- meson-python=0.13.1
11-
- cython>=0.29.33
11+
- cython<4.0.0a0
1212

1313
# test dependencies
1414
- pytest>=7.3.2

ci/deps/actions-311-pyarrownightly.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ dependencies:
77
# build dependencies
88
- versioneer
99
- meson=1.2.1
10-
- cython>=0.29.33
10+
- cython<4.0.0a0
1111
- meson-python=0.13.1
1212

1313
# test dependencies

ci/deps/actions-311.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ dependencies:
66

77
# build dependencies
88
- versioneer
9-
- cython>=0.29.33
9+
- cython<4.0.0a0
1010
- meson=1.2.1
1111
- meson-python=0.13.1
1212

ci/deps/actions-312.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ dependencies:
66

77
# build dependencies
88
- versioneer
9-
- cython>=0.29.33
9+
- cython<4.0.0a0
1010
- meson=1.2.1
1111
- meson-python=0.13.1
1212

ci/deps/actions-313-freethreading.yaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ dependencies:
77
# build dependencies
88
- setuptools
99
- versioneer
10+
- cython<4.0.0a0
1011
- meson=1.8.0
1112
- meson-python=0.18.0
1213

@@ -21,10 +22,8 @@ dependencies:
2122
# optional dependencies
2223
- hypothesis>=6.84.0
2324

24-
# Move Cython to build dependencies, once they release a version that supports freethreading
2525
- pip:
2626
# No free-threaded coveragepy (with the C-extension) on conda-forge yet
2727
- pytest-cov
2828
- "tzdata>=2022.7"
2929
- "--extra-index-url https://pypi.anaconda.org/scientific-python-nightly-wheels/simple"
30-
- "cython"

ci/deps/actions-313.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ dependencies:
66

77
# build dependencies
88
- versioneer
9-
- cython>=0.29.33
9+
- cython<4.0.0a0
1010
- meson=1.2.1
1111
- meson-python=0.13.1
1212

ci/deps/actions-pypy-39.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ dependencies:
99

1010
# build dependencies
1111
- versioneer
12-
- cython>=0.29.33
12+
- cython<4.0.0a0
1313
- meson=1.2.1
1414
- meson-python=0.13.1
1515

doc/source/whatsnew/v2.3.0.rst

Lines changed: 22 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
.. _whatsnew_230:
22

3-
What's new in 2.3.0 (Month XX, 2024)
3+
What's new in 2.3.0 (June 4, 2025)
44
------------------------------------
55

66
These are the changes in pandas 2.3.0. See :ref:`release` for a full changelog
@@ -10,37 +10,26 @@ including other versions of pandas.
1010

1111
.. ---------------------------------------------------------------------------
1212
13-
.. _whatsnew_230.upcoming_changes:
14-
15-
Upcoming changes in pandas 3.0
16-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17-
18-
1913
.. _whatsnew_230.enhancements:
2014

2115
Enhancements
2216
~~~~~~~~~~~~
2317

24-
.. _whatsnew_230.enhancements.enhancement1:
25-
26-
enhancement1
27-
^^^^^^^^^^^^
28-
29-
3018
.. _whatsnew_230.enhancements.other:
3119

3220
Other enhancements
3321
^^^^^^^^^^^^^^^^^^
3422

23+
- :meth:`pandas.api.interchange.from_dataframe` now uses the `PyCapsule Interface <https://arrow.apache.org/docs/format/CDataInterface/PyCapsuleInterface.html>`_ if available, only falling back to the Dataframe Interchange Protocol if that fails (:issue:`60739`)
3524
- The semantics for the ``copy`` keyword in ``__array__`` methods (i.e. called
3625
when using ``np.array()`` or ``np.asarray()`` on pandas objects) has been
3726
updated to work correctly with NumPy >= 2 (:issue:`57739`)
38-
- :meth:`Series.str.decode` result now has ``StringDtype`` when ``future.infer_string`` is True (:issue:`60709`)
39-
- :meth:`~Series.to_hdf` and :meth:`~DataFrame.to_hdf` now round-trip with ``StringDtype`` (:issue:`60663`)
27+
- :meth:`Series.str.decode` result now has :class:`StringDtype` when ``future.infer_string`` is True (:issue:`60709`)
28+
- :meth:`~Series.to_hdf` and :meth:`~DataFrame.to_hdf` now round-trip with :class:`StringDtype` (:issue:`60663`)
4029
- Improved ``repr`` of :class:`.NumpyExtensionArray` to account for NEP51 (:issue:`61085`)
4130
- The :meth:`Series.str.decode` has gained the argument ``dtype`` to control the dtype of the result (:issue:`60940`)
42-
- The :meth:`~Series.cumsum`, :meth:`~Series.cummin`, and :meth:`~Series.cummax` reductions are now implemented for ``StringDtype`` columns (:issue:`60633`)
43-
- The :meth:`~Series.sum` reduction is now implemented for ``StringDtype`` columns (:issue:`59853`)
31+
- The :meth:`~Series.cumsum`, :meth:`~Series.cummin`, and :meth:`~Series.cummax` reductions are now implemented for :class:`StringDtype` columns (:issue:`60633`)
32+
- The :meth:`~Series.sum` reduction is now implemented for :class:`StringDtype` columns (:issue:`59853`)
4433

4534
.. ---------------------------------------------------------------------------
4635
.. _whatsnew_230.notable_bug_fixes:
@@ -55,7 +44,7 @@ These are bug fixes that might have notable behavior changes.
5544
Comparisons between different string dtypes
5645
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5746

58-
In previous versions, comparing Series of different string dtypes (e.g. ``pd.StringDtype("pyarrow", na_value=pd.NA)`` against ``pd.StringDtype("python", na_value=np.nan)``) would result in inconsistent resulting dtype or incorrectly raise. pandas will now use the hierarchy
47+
In previous versions, comparing :class:`Series` of different string dtypes (e.g. ``pd.StringDtype("pyarrow", na_value=pd.NA)`` against ``pd.StringDtype("python", na_value=np.nan)``) would result in inconsistent resulting dtype or incorrectly raise. pandas will now use the hierarchy
5948

6049
object < (python, NaN) < (pyarrow, NaN) < (python, NA) < (pyarrow, NA)
6150

@@ -70,9 +59,9 @@ in determining the result dtype when there are different string dtypes compared.
7059
API changes
7160
~~~~~~~~~~~
7261

73-
- When enabling the ``future.infer_string`` option: Index set operations (like
74-
union or intersection) will now ignore the dtype of an empty ``RangeIndex`` or
75-
empty ``Index`` with object dtype when determining the dtype of the resulting
62+
- When enabling the ``future.infer_string`` option, :class:`Index` set operations (like
63+
union or intersection) will now ignore the dtype of an empty :class:`RangeIndex` or
64+
empty :class:`Index` with ``object`` dtype when determining the dtype of the resulting
7665
Index (:issue:`60797`)
7766

7867
.. ---------------------------------------------------------------------------
@@ -83,121 +72,35 @@ Deprecations
8372
- Deprecated allowing non-``bool`` values for ``na`` in :meth:`.str.contains`, :meth:`.str.startswith`, and :meth:`.str.endswith` for dtypes that do not already disallow these (:issue:`59615`)
8473
- Deprecated the ``"pyarrow_numpy"`` storage option for :class:`StringDtype` (:issue:`60152`)
8574

86-
.. ---------------------------------------------------------------------------
87-
.. _whatsnew_230.performance:
88-
89-
Performance improvements
90-
~~~~~~~~~~~~~~~~~~~~~~~~
91-
-
92-
-
93-
9475
.. ---------------------------------------------------------------------------
9576
.. _whatsnew_230.bug_fixes:
9677

9778
Bug fixes
9879
~~~~~~~~~
9980

100-
Categorical
101-
^^^^^^^^^^^
102-
-
103-
-
104-
105-
Datetimelike
106-
^^^^^^^^^^^^
107-
-
108-
-
109-
110-
Timedelta
111-
^^^^^^^^^
112-
-
113-
-
114-
115-
Timezones
116-
^^^^^^^^^
117-
-
118-
-
119-
12081
Numeric
12182
^^^^^^^
122-
- Enabled :class:`Series.mode` and :class:`DataFrame.mode` with ``dropna=False`` to sort the result for all dtypes in the presence of NA values; previously only certain dtypes would sort (:issue:`60702`)
123-
- Bug in :meth:`Series.round` on object columns no longer raises ``TypeError``
124-
-
125-
126-
Conversion
127-
^^^^^^^^^^
128-
-
129-
-
83+
- Bug in :meth:`Series.mode` and :meth:`DataFrame.mode` with ``dropna=False`` where not all dtypes would sort in the presence of ``NA`` values (:issue:`60702`)
84+
- Bug in :meth:`Series.round` where a ``TypeError`` would always raise with ``object`` dtype (:issue:`61206`)
13085

13186
Strings
13287
^^^^^^^
133-
- Bug in :meth:`.DataFrameGroupBy.min`, :meth:`.DataFrameGroupBy.max`, :meth:`.Resampler.min`, :meth:`.Resampler.max` on string input of all NA values would return float dtype; now returns string (:issue:`60810`)
134-
- Bug in :meth:`DataFrame.sum` with ``axis=1``, :meth:`.DataFrameGroupBy.sum` or :meth:`.SeriesGroupBy.sum` with ``skipna=True``, and :meth:`.Resampler.sum` on :class:`StringDtype` with all NA values resulted in ``0`` and is now the empty string ``""`` (:issue:`60229`)
135-
- Bug in :meth:`Series.__pos__` and :meth:`DataFrame.__pos__` did not raise for :class:`StringDtype` with ``storage="pyarrow"`` (:issue:`60710`)
136-
- Bug in :meth:`Series.rank` for :class:`StringDtype` with ``storage="pyarrow"`` incorrectly returning integer results in case of ``method="average"`` and raising an error if it would truncate results (:issue:`59768`)
88+
- Bug in :meth:`.DataFrameGroupBy.min`, :meth:`.DataFrameGroupBy.max`, :meth:`.Resampler.min`, :meth:`.Resampler.max` where all NA values of string dtype would return float instead of string dtype (:issue:`60810`)
89+
- Bug in :meth:`DataFrame.sum` with ``axis=1``, :meth:`.DataFrameGroupBy.sum` or :meth:`.SeriesGroupBy.sum` with ``skipna=True``, and :meth:`.Resampler.sum` with all NA values of :class:`StringDtype` resulted in ``0`` instead of the empty string ``""`` (:issue:`60229`)
90+
- Bug in :meth:`Series.__pos__` and :meth:`DataFrame.__pos__` where an ``Exception`` was not raised for :class:`StringDtype` with ``storage="pyarrow"`` (:issue:`60710`)
91+
- Bug in :meth:`Series.rank` for :class:`StringDtype` with ``storage="pyarrow"`` that incorrectly returned integer results with ``method="average"`` and raised an error if it would truncate results (:issue:`59768`)
13792
- Bug in :meth:`Series.replace` with :class:`StringDtype` when replacing with a non-string value was not upcasting to ``object`` dtype (:issue:`60282`)
93+
- Bug in :meth:`Series.str.center` with :class:`StringDtype` with ``storage="pyarrow"`` not matching the python behavior in corner cases with an odd number of fill characters (:issue:`54792`)
13894
- Bug in :meth:`Series.str.replace` when ``n < 0`` for :class:`StringDtype` with ``storage="pyarrow"`` (:issue:`59628`)
139-
- Bug in ``ser.str.slice`` with negative ``step`` with :class:`ArrowDtype` and :class:`StringDtype` with ``storage="pyarrow"`` giving incorrect results (:issue:`59710`)
140-
- Bug in the ``center`` method on :class:`Series` and :class:`Index` object ``str`` accessors with pyarrow-backed dtype not matching the python behavior in corner cases with an odd number of fill characters (:issue:`54792`)
141-
142-
Interval
143-
^^^^^^^^
144-
-
145-
-
95+
- Bug in :meth:`Series.str.slice` with negative ``step`` with :class:`ArrowDtype` and :class:`StringDtype` with ``storage="pyarrow"`` giving incorrect results (:issue:`59710`)
14696

14797
Indexing
14898
^^^^^^^^
149-
- Fixed bug in :meth:`Index.get_indexer` round-tripping through string dtype when ``infer_string`` is enabled (:issue:`55834`)
150-
-
151-
152-
Missing
153-
^^^^^^^
154-
-
155-
-
156-
157-
MultiIndex
158-
^^^^^^^^^^
159-
-
160-
-
99+
- Bug in :meth:`Index.get_indexer` round-tripping through string dtype when ``infer_string`` is enabled (:issue:`55834`)
161100

162101
I/O
163102
^^^
164-
- :meth:`DataFrame.to_excel` was storing decimals as strings instead of numbers (:issue:`49598`)
165-
-
166-
167-
Period
168-
^^^^^^
169-
-
170-
-
171-
172-
Plotting
173-
^^^^^^^^
174-
-
175-
-
176-
177-
Groupby/resample/rolling
178-
^^^^^^^^^^^^^^^^^^^^^^^^
179-
-
180-
-
181-
182-
Reshaping
183-
^^^^^^^^^
184-
-
185-
-
186-
187-
Sparse
188-
^^^^^^
189-
-
190-
-
191-
192-
ExtensionArray
193-
^^^^^^^^^^^^^^
194-
-
195-
-
196-
197-
Styler
198-
^^^^^^
199-
-
200-
-
103+
- Bug in :meth:`DataFrame.to_excel` which stored decimals as strings instead of numbers (:issue:`49598`)
201104

202105
Other
203106
^^^^^
@@ -209,3 +112,5 @@ Other
209112

210113
Contributors
211114
~~~~~~~~~~~~
115+
116+
.. contributors:: v2.2.3..v2.3.0|HEAD

doc/source/whatsnew/v3.0.0.rst

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ Other enhancements
3030
^^^^^^^^^^^^^^^^^^
3131
- :class:`pandas.api.typing.FrozenList` is available for typing the outputs of :attr:`MultiIndex.names`, :attr:`MultiIndex.codes` and :attr:`MultiIndex.levels` (:issue:`58237`)
3232
- :class:`pandas.api.typing.SASReader` is available for typing the output of :func:`read_sas` (:issue:`55689`)
33-
- :meth:`pandas.api.interchange.from_dataframe` now uses the `PyCapsule Interface <https://arrow.apache.org/docs/format/CDataInterface/PyCapsuleInterface.html>`_ if available, only falling back to the Dataframe Interchange Protocol if that fails (:issue:`60739`)
3433
- Added :meth:`.Styler.to_typst` to write Styler objects to file, buffer or string in Typst format (:issue:`57617`)
3534
- Added missing :meth:`pandas.Series.info` to API reference (:issue:`60926`)
3635
- :class:`pandas.api.typing.NoDefault` is available for typing ``no_default``

environment.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ dependencies:
88

99
# build dependencies
1010
- versioneer
11-
- cython~=3.0.5
11+
- cython<4.0.0a0
1212
- meson=1.2.1
1313
- meson-python=0.13.1
1414

pandas/tests/groupby/test_raises.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -671,7 +671,7 @@ def test_groupby_raises_category_on_category(
671671
"nunique": (None, ""),
672672
"pct_change": (TypeError, "unsupported operand type"),
673673
"prod": (TypeError, "category type does not support prod operations"),
674-
"quantile": (TypeError, ""),
674+
"quantile": (TypeError, "No matching signature found"),
675675
"rank": (None, ""),
676676
"sem": (
677677
TypeError,

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ requires = [
55
"meson-python>=0.13.1",
66
"meson>=1.2.1,<2",
77
"wheel",
8-
"Cython==3.1.0rc1", # Note: sync with setup.py, environment.yml and asv.conf.json
8+
"Cython<4.0.0a0", # Note: sync with setup.py, environment.yml and asv.conf.json
99
# Force numpy higher than 2.0rc1, so that built wheels are compatible
1010
# with both numpy 1 and 2
1111
"numpy>=2.0.0rc1",

requirements-dev.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
pip
55
versioneer[toml]
6-
cython~=3.0.5
6+
cython<4.0.0a0
77
meson[ninja]==1.2.1
88
meson-python==0.13.1
99
pytest>=7.3.2

web/pandas/versions.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,16 @@
55
"url": "https://pandas.pydata.org/docs/dev/"
66
},
77
{
8-
"name": "2.2 (stable)",
9-
"version": "2.2",
8+
"name": "2.3 (stable)",
9+
"version": "2.3",
1010
"url": "https://pandas.pydata.org/docs/",
1111
"preferred": true
1212
},
13+
{
14+
"name": "2.2",
15+
"version": "2.2",
16+
"url": "https://pandas.pydata.org/pandas-docs/version/2.2/"
17+
},
1318
{
1419
"name": "2.1",
1520
"version": "2.1",

0 commit comments

Comments
 (0)