You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -39,16 +29,36 @@ in determining the result dtype when there are different string dtypes compared.
39
29
- When ``pd.StringDtype("python", na_value=pd.NA)`` is compared against ``pd.StringDtype("pyarrow", na_value=np.nan)``, the result will be ``boolean``, the NumPy-backed nullable extension array.
40
30
- When ``pd.StringDtype("python", na_value=pd.NA)`` is compared against ``pd.StringDtype("python", na_value=np.nan)``, the result will be ``boolean``, the NumPy-backed nullable extension array.
41
31
32
+
.. _whatsnew_231.string_fixes.ignore_empty:
33
+
34
+
Index set operations ignore empty RangeIndex and object dtype Index
When enabling the ``future.infer_string`` option, :class:`Index` set operations (like
38
+
union or intersection) will now ignore the dtype of an empty :class:`RangeIndex` or
39
+
empty :class:`Index` with ``object`` dtype when determining the dtype of the resulting
40
+
Index (:issue:`60797`).
42
41
43
-
.. _whatsnew_231.api_changes:
42
+
This ensures that combining such empty Index with strings will infer the string dtype
43
+
correctly, rather than defaulting to ``object`` dtype. For example:
44
44
45
-
API changes
46
-
~~~~~~~~~~~
45
+
.. code-block:: python
47
46
48
-
- When enabling the ``future.infer_string`` option, :class:`Index` set operations (like
49
-
union or intersection) will now ignore the dtype of an empty :class:`RangeIndex` or
50
-
empty :class:`Index` with ``object`` dtype when determining the dtype of the resulting
51
-
Index (:issue:`60797`)
47
+
>>> pd.options.mode.infer_string =True
48
+
>>> df = pd.DataFrame()
49
+
>>> df.columns.dtype
50
+
dtype('int64') # default RangeIndex for empty columns
51
+
>>> df["a"] = [1, 2, 3]
52
+
>>> df.columns.dtype
53
+
<StringDtype(na_value=nan)># new columns use string dtype instead of object dtype
54
+
55
+
.. _whatsnew_231.string_fixes.bugs:
56
+
57
+
Bug fixes
58
+
^^^^^^^^^
59
+
- 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`)
60
+
- 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`)
61
+
- Fixed bug in :meth:`DataFrame.explode` and :meth:`Series.explode` where methods would fail with ``dtype="str"`` (:issue:`61623`)
52
62
53
63
54
64
.. _whatsnew_231.regressions:
@@ -62,9 +72,7 @@ Fixed regressions
62
72
63
73
Bug fixes
64
74
~~~~~~~~~
65
-
- 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`)
66
-
- 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`)
67
-
- Fixed bug in :meth:`DataFrame.explode` and :meth:`Series.explode` where methods would fail with ``dtype="str"`` (:issue:`61623`)
0 commit comments