This package provides the [performance] extra for python-pandas
It is highly recommended to install this subpackage, as its dependencies
provide speed improvements, especially when working with large data sets.
Provides
Requires
License
BSD-3-Clause
Changelog
* Mon Aug 24 2026 Markéta Machová <mmachova@suse.com>
- Add np25.patch to fix tests with numpy 2.5
- Hotfix dirty hack which broke with recent python-rpm-macros
* Tue Jul 28 2026 Ben Greiner <code@bnavigator.de>
- Update to 3.0.5
* Fixed a regression where the pandas 3.0.4 wheels could crash
with a segmentation fault on Python 3.14 (and other datetime
code paths), because they were built against an incompatible
numpy version (GH 66086)
- Re-enable xdist, the resource usage penalty when not used is too
high. Use --without xdist when troubleshooting.
* update constraints for increased job limit
* Tue Jul 21 2026 Dirk Müller <dmueller@suse.com>
- avoid xdist - makes troubleshooting testsuite failures quite hard
* Thu Jul 16 2026 Dirk Müller <dmueller@suse.com>
- revert to 3.0.3: 3.0.4 was yanked due to crashes in date-time
related functions
* Wed Jul 15 2026 Steve Kowalik <steven.kowalik@suse.com>
- Update to 3.0.4:
[#]# Core Architecture & Structural Enhancements
* String columns are now inferred as a dedicated str data type by default
instead of the generic NumPy object type.
* Columns with the new str dtype can only store strings or missing values,
entirely rejecting non-string inputs.
* Copy-on-Write (CoW) is now the default and only mode, ensuring
predictable data mutations across indexing operations.
* Because modifications now strictly return copies, traditional multi-step
chained assignments will no longer work.
* The option mode.copy_on_write no longer has an impact.
* Support for the pd.col() syntax simplifies referencing columns by name to
build expressions natively.
* The pd.col() syntax provides an elegant alternative to using complex
lambda functions inside DataFrame.assign().
* DataFrame and Series natively support the Arrow PyCapsule Interface for
efficient, zero-copy data exchanges.
* The default resolution for constructing datetime-like data shifts from
nanoseconds to microseconds.
* Version 3.0 explicitly requires Python 3.11 or higher.
[#]# Data Merging & Transformation Updates
* Added support for pd.col() expressions in Series.case_when()
* Merging methods now officially support left_anti and right_anti arguments
within the how parameter.
* The how parameter string inputs are now rigorously validated during a
merge operation.
* The pandas.merge() function now successfully propagates the attrs
dictionary when inputs contain identical tags.
* DataFrame.pivot_table() now accepts flexible, additional keyword
arguments forwarded to aggfunc.
* Passing ignore_index=True while simultaneously defining keys inside
concat() now throws a strict ValueError.
* Using DataFrame.agg() on axis=1 with a function that attempts to relabel
the index will raise a NotImplementedError.
[#]# Missing Value Handling & Styling Improvements
* The missing value sentinel for the new default string types is uniformly
set as NaN (np.nan).
* fillna() can accept a literal None, automatically resolving it to the
appropriate data-type-specific NA value.
* Users can now seamlessly execute DataFrame.fillna() along axis=1 using
dictionary or Series mappings.
* The Styler object introduces Styler.to_typst() to write formatted data
directly to Typst-compliant files.
* Users can now apply dedicated format treatments to index and column
header names using Styler.format_index_names().
* Frozenset elements contained within pandas data structures are now
natively recognized and printed cleanly.
[#]# Input / Output (I/O) Enhancements
* The errors.DtypeWarning is upgraded to include specific column names when
mixed types are caught.
* The merge_cells parameter in to_excel() accepts "columns" to target
MultiIndex header columns uniquely.
* A brand-new autofilter parameter within to_excel() automatically applies
native filters to columns.
* The if_exists parameter in to_sql() gains a "delete_rows" option to wipe
records prior to writing new entries.
[#]# Groupby & System Configurations
* DataFrameGroupBy.prod() now evaluates unobserved groups as 1 rather than
evaluating them as missing values.
* The all() and any() operations on DataFrameGroupBy now evaluate
unobserved groups as True and False.
* DataFrameGroupBy.groups() has been updated to fully include tracking data
for unobserved categorical groups.
* Configuring system configurations is streamlined as set_option() now
accepts a dictionary of multiple parameters.
[#]# Bug fixes
* Fixed a bug in Series.rank() with period dtype and missing values, always
sorting missing values at the top, regardless of the na_option value
* Fixed a bug in Series.var() computing the variance of complex numbers
incorrectly
* Fixed a bug in to_hdf() with string columns raising an error when using
compression
* Fixed a bug in the sum() method with python-backed string dtype returning
incorrect value for an empty Series and ignoring the min_count argument
* Fixed a bug when using col() with Python functions bool(), iter(),
copy(), and deepcopy() either failed or produced incorrect results; these
now all raise a TypeError
* Fixed a bug where col() and expressions derived from it failed with
power (**) and matrix multiplication (@) operators
* Fixed a bug where DataFrame.div() ignored the axis argument when used
with level for MultiIndex columns
* Fixed a bug in the DataFrame constructor when passed a Series or Index
correctly handling Copy-on-Write
* Allow ExtensionArray to have dtypes involving numpy.void
* Fixed a bug in col() where unary operators (-, +, abs) were not supported
* Prevent buffer overflow in Rolling.corr() and Rolling.cov() with variable
windows when passing other with a longer index than the original window
- The consortium-standard package is no longer built, since that extra has
been removed.
- Dropped patches, merged upstream:
* pandas-pr61132-dropna.patch
* pandas-pr62553-numexpr.patch
* pandas-pr63406-meson-types.patch
* pandas-pr62863.patch
* pandas-pr63143.patch
* Mon Jun 22 2026 Josef Melcr <josef.melcr@suse.com>
- Add upstream pandas-pr62863.patch and pandas-pr63143.patch to
fix testsuite failures with GCC 16
* Mon Jun 15 2026 Dirk Müller <dmueller@suse.com>
- skip testing for python 3.11
* Thu Apr 16 2026 Markéta Machová <mmachova@suse.com>
- Add upstream pandas-pr63406-meson-types.patch to fix build with
meson 1.11
- Refresh test python flavors
* Thu Dec 18 2025 Markéta Machová <mmachova@suse.com>
- update to 2.3.3
* compatibility with Python 3.14
* Improvements and fixes for the StringDtype
* Fix bug in Series.str methods
* Fix bug in groupby() with sum() and unobserved categories
resulting in 0 instead of the empty string
- Add upstream pandas-pr62553-numexpr.patch to fix compatibility
with numexpr 2.13
* Sun Sep 14 2025 Dirk Müller <dmueller@suse.com>
- update to 2.3.2:
* Fix to_json() with orient="table" to correctly use the
“string” type in the JSON Table Schema for StringDtype columns
* Boolean operations (|, &, ^) with bool-dtype objects on the
left and StringDtype objects on the right now cast the string
to bool, with a deprecation warning
* Fixed match(), fullmatch() and contains() string methods with
compiled regex for the Arrow-backed string dtype
* Bug in Series.replace() and DataFrame.replace() inconsistently
replacing matching values when missing values are present
for string dtypes
* Fri Jul 11 2025 Ben Greiner <code@bnavigator.de>
- Update to 2.3.1
* This release includes some improvements and fixes to the future
string data type (preview feature for the upcoming pandas 3.0)
[#]# Improvements and fixes for the StringDtype
* Comparisons between different string dtypes
* Index set operations ignore empty RangeIndex and object dtype
Index
[#]# Bug fixes
* Bug in DataFrameGroupBy.min(), DataFrameGroupBy.max(),
Resampler.min(), Resampler.max() where all NA values of string
dtype would return float instead of string dtype (GH 60810)
* Bug in DataFrame.join() incorrectly downcasting object-dtype
indexes (GH 61771)
* Bug in DataFrame.sum() with axis=1, DataFrameGroupBy.sum() or
SeriesGroupBy.sum() with skipna=True, and Resampler.sum() with
all NA values of StringDtype resulted in 0 instead of the empty
string "" (GH 60229)
* Fixed bug in DataFrame.explode() and Series.explode() where
methods would fail with dtype="str" (GH 61623)
* Fixed bug in unpickling objects pickled in pandas versions
pre-2.3.0 that used StringDtype (GH 61763)
- Release 2.3.0
[#]# Enhancements
* The semantics for the copy keyword in __array__ methods (i.e.
called when using np.array() or np.asarray() on pandas objects)
has been updated to work correctly with NumPy >= 2 (GH 57739)
* Series.str.decode() result now has StringDtype when
future.infer_string is True (GH 60709)
* to_hdf() and to_hdf() now round-trip with StringDtype (GH
60663)
* Improved repr of NumpyExtensionArray to account for NEP51 (GH
61085)
* The Series.str.decode() has gained the argument dtype to
control the dtype of the result (GH 60940)
* The cumsum(), cummin(), and cummax() reductions are now
implemented for StringDtype columns (GH 60633)
* The sum() reduction is now implemented for StringDtype columns
(GH 59853)
[#]# Deprecations
* Deprecated allowing non-bool values for na in str.contains(),
str.startswith(), and str.endswith() for dtypes that do not
already disallow these (GH 59615)
* Deprecated the "pyarrow_numpy" storage option for StringDtype
(GH 60152)
* The deprecation of setting the argument include_groups to True
in DataFrameGroupBy.apply() has been promoted from a
DeprecationWarning to FutureWarning; only False will be allowed
(GH 7155)
[#]# Bug fixes
[#]## Numeric
* Bug in Series.mode() and DataFrame.mode() with dropna=False
where not all dtypes would sort in the presence of NA values
(GH 60702)
* Bug in Series.round() where a TypeError would always raise with
object dtype (GH 61206)
[#]## Strings
* Bug in Series.__pos__() and DataFrame.__pos__() where an
Exception was not raised for StringDtype with storage="pyarrow"
(GH 60710)
* Bug in Series.rank() for StringDtype with storage="pyarrow"
that incorrectly returned integer results with method="average"
and raised an error if it would truncate results (GH 59768)
* Bug in Series.replace() with StringDtype when replacing with a
non-string value was not upcasting to object dtype (GH 60282)
* Bug in Series.str.center() with StringDtype with
storage="pyarrow" not matching the python behavior in corner
cases with an odd number of fill characters (GH 54792)
* Bug in Series.str.replace() when n < 0 for StringDtype with
storage="pyarrow" (GH 59628)
* Bug in Series.str.slice() with negative step with ArrowDtype
and StringDtype with storage="pyarrow" giving incorrect results
(GH 59710)
[#]## Indexing
Bug in Index.get_indexer() round-tripping through string dtype
when infer_string is enabled (GH 55834)
[#]## I/O
* Bug in DataFrame.to_excel() which stored decimals as strings
instead of numbers (GH 49598)
[#]## Other
* Fixed usage of inspect when the optional dependencies pyarrow
or jinja2 are not installed (GH 60196)
- Drop patches:
* timedelta.patch
* pandas-pr60545-arrow-exception.patch
* pandas-pr60584-60586-mpl-vert.patch
- Refresh dropna.patch to pandas-pr61132-dropna.patch
* gh#pandas-dev/pandas#61132
* Thu Mar 20 2025 Markéta Machová <mmachova@suse.com>
- Add dropna.patch and timedelta.patch to fix tests with Numpy 2.2
* Thu Feb 20 2025 Ben Greiner <code@bnavigator.de>
- Support pyarrow 19
* Add pandas-pr60545-arrow-exception.patch
gh#pandas-dev/pandas#60545
* Skip TestParquetPyArrow.test_roundtrip_decimal: Would require
gh#pandas-dev/pandas#60755 and all other backports of the new
string type system.
* Fri Feb 07 2025 Ben Greiner <code@bnavigator.de>
- Add pandas-pr60584-60586-mpl