Skip to content

Commit 47e909d

Browse files
metllordjreback
authored andcommitted
Fixes SparseSeries initiated with dictionary raising AttributeError (#16960)
1 parent 1dc93b5 commit 47e909d

File tree

3 files changed

+21
-4
lines changed

3 files changed

+21
-4
lines changed

Diff for: doc/source/whatsnew/v0.21.0.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ Groupby/Resample/Rolling
219219

220220
Sparse
221221
^^^^^^
222-
222+
- Bug in ``SparseSeries`` raises ``AttributeError`` when a dictionary is passed in as data (:issue:`16777`)
223223

224224

225225
Reshaping

Diff for: pandas/core/sparse/series.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -146,10 +146,9 @@ def __init__(self, data=None, index=None, sparse_index=None, kind='block',
146146
data = data._data
147147

148148
elif isinstance(data, (Series, dict)):
149-
if index is None:
150-
index = data.index.view()
149+
data = Series(data, index=index)
150+
index = data.index.view()
151151

152-
data = Series(data)
153152
res = make_sparse(data, kind=kind, fill_value=fill_value)
154153
data, sparse_index, fill_value = res
155154

Diff for: pandas/tests/sparse/test_series.py

+18
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,24 @@ def setup_method(self, method):
8888
self.ziseries2 = SparseSeries(arr, index=index, kind='integer',
8989
fill_value=0)
9090

91+
def test_constructor_dict_input(self):
92+
# gh-16905
93+
constructor_dict = {1: 1.}
94+
index = [0, 1, 2]
95+
96+
# Series with index passed in
97+
series = pd.Series(constructor_dict)
98+
expected = SparseSeries(series, index=index)
99+
100+
result = SparseSeries(constructor_dict, index=index)
101+
tm.assert_sp_series_equal(result, expected)
102+
103+
# Series with index and dictionary with no index
104+
expected = SparseSeries(series)
105+
106+
result = SparseSeries(constructor_dict)
107+
tm.assert_sp_series_equal(result, expected)
108+
91109
def test_constructor_dtype(self):
92110
arr = SparseSeries([np.nan, 1, 2, np.nan])
93111
assert arr.dtype == np.float64

0 commit comments

Comments
 (0)