BUG: SparseDataFrame may not preserve passed dtype by sinhrks · Pull Request #13866 · pandas-dev/pandas (original) (raw)
SparseDataFrame
may reset passed sparse data's dtype
and fill_value
as below.
arr = pd.SparseArray([1, 0, 3, 0], dtype=np.int64, fill_value=0)
# OK, dtype and fill_value are kept
s = pd.SparseSeries(arr, name='x')
s.dtype, s.fill_value
(dtype('int64'), 0)
# NG, dtype is reset
df = pd.SparseDataFrame(s)
df['x'].dtype, df['x'].fill_value
(dtype('float64'), 0)
# NG, dtype is reset
df = pd.SparseDataFrame({'x': s})
df['x'].dtype, df['x'].fill_value
(dtype('float64'), 0)
# NG, dtype and fill_value are reset
df = pd.SparseDataFrame({'x': arr})
df['x'].dtype, df['x'].fill_value
(dtype('float64'), nan)