Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions doc/source/whatsnew/v0.24.2.rst
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ Bug Fixes

- Bug in :meth:`Series.is_unique` where single occurrences of ``NaN`` were not considered unique (:issue:`25180`)
- Bug in :func:`merge` when merging an empty ``DataFrame`` with an ``Int64`` column or a non-empty ``DataFrame`` with an ``Int64`` column that is all ``NaN`` (:issue:`25183`)
- Bug in :class:`SparseFrame` constructor where passing ``None`` as the data would cause ``default_fill_value`` to be ignored (:issue:`16807`)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you move to 0.25

-

.. _whatsnew_0.242.contributors:
Expand Down
4 changes: 2 additions & 2 deletions pandas/core/sparse/frame.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,8 +124,8 @@ def __init__(self, data=None, index=None, columns=None, default_kind=None,
columns = Index([])
else:
for c in columns:
data[c] = SparseArray(np.nan, index=index,
kind=self._default_kind,
data[c] = SparseArray(self._default_fill_value,
index=index, kind=self._default_kind,
fill_value=self._default_fill_value)
mgr = to_manager(data, columns, index)
if dtype is not None:
Expand Down
21 changes: 21 additions & 0 deletions pandas/tests/sparse/frame/test_frame.py
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,19 @@ def test_type_coercion_at_construction(self):
default_fill_value=0)
tm.assert_sp_frame_equal(result, expected)

def test_default_dtype(self):
result = pd.SparseDataFrame(columns=list('ab'), index=range(2))
expected = pd.SparseDataFrame([[np.nan, np.nan], [np.nan, np.nan]],
columns=list('ab'), index=range(2))
tm.assert_sp_frame_equal(result, expected)

def test_nan_data_with_int_dtype_raises_error(self):
sdf = pd.SparseDataFrame([[np.nan, np.nan], [np.nan, np.nan]],
columns=list('ab'), index=range(2))
msg = "Cannot convert non-finite values"
with pytest.raises(ValueError, match=msg):
pd.SparseDataFrame(sdf, dtype=np.int64)

def test_dtypes(self):
df = DataFrame(np.random.randn(10000, 4))
df.loc[:9998] = np.nan
Expand Down Expand Up @@ -1246,6 +1259,14 @@ def test_notna(self):
'B': [True, False, True, True, False]})
tm.assert_frame_equal(res.to_dense(), exp)

def test_default_fill_value_with_no_data(self):
# GH 16807
expected = pd.SparseDataFrame([[1.0, 1.0], [1.0, 1.0]],
columns=list('ab'), index=range(2))
result = pd.SparseDataFrame(columns=list('ab'), index=range(2),
default_fill_value=1.0)
tm.assert_frame_equal(expected, result)


class TestSparseDataFrameArithmetic(object):

Expand Down