Require the dtype of SparseArray.fill_value and sp_values.dtype to match · Issue #23124 · pandas-dev/pandas (original) (raw)
This has confused me for a while, but we apparently (sometimes?) allow a fill_value
whose dtype is not the same as sp_values.dtype
In [20]: a = pd.SparseArray([1, 2, 3], fill_value=1.0)
In [21]: a Out[21]: [1.0, 2, 3] Fill: 1.0 IntIndex Indices: array([1, 2], dtype=int32)
In [22]: a.sp_values.dtype Out[22]: dtype('int64')
This can lead to confusing behavior when doing operations.
I suspect a primary motivation was supporting sparse integer values with NaN
for a fill value. We should investigate what's tested, part of the API, and useful to users.