Skip to content

Commit 9de503a

Browse files
committed
BUG: SparseSeries constructor ignores input data name
1 parent 676cb95 commit 9de503a

File tree

4 files changed

+27
-13
lines changed

4 files changed

+27
-13
lines changed

doc/source/whatsnew/v0.16.2.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,6 @@ Bug Fixes
8080

8181

8282
- Bug in GroupBy.get_group raises ValueError when group key contains NaT (:issue:`6992`)
83-
83+
- Bug in ``SparseSeries`` constructor ignores input data name (:issue:`xxx`)
8484

8585
- Bug where infer_freq infers timerule (WOM-5XXX) unsupported by to_offset (:issue:`9425`)

doc/source/whatsnew/v0.17.0.txt

+1
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,4 @@ Performance Improvements
5757

5858
Bug Fixes
5959
~~~~~~~~~
60+

pandas/sparse/series.py

+3
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,9 @@ def __init__(self, data=None, index=None, sparse_index=None, kind='block',
121121
if data is None:
122122
data = []
123123

124+
if isinstance(data, Series) and name is None:
125+
name = data.name
126+
124127
is_sparse_array = isinstance(data, SparseArray)
125128
if fill_value is None:
126129
if is_sparse_array:

pandas/sparse/tests/test_sparse.py

+22-12
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ def assert_sp_panel_equal(left, right, exact_indices=True):
119119
assert(item in left)
120120

121121

122-
class TestSparseSeries(tm.TestCase,
122+
class TestASparseSeries(tm.TestCase,
123123
test_series.CheckNameIntegration):
124124
_multiprocess_can_split_ = True
125125

@@ -128,22 +128,23 @@ def setUp(self):
128128

129129
date_index = bdate_range('1/1/2011', periods=len(index))
130130

131-
self.bseries = SparseSeries(arr, index=index, kind='block')
132-
self.bseries.name = 'bseries'
131+
self.bseries = SparseSeries(arr, index=index, kind='block',
132+
name='bseries')
133133

134134
self.ts = self.bseries
135135

136136
self.btseries = SparseSeries(arr, index=date_index, kind='block')
137137

138-
self.iseries = SparseSeries(arr, index=index, kind='integer')
138+
self.iseries = SparseSeries(arr, index=index, kind='integer',
139+
name='iseries')
139140

140141
arr, index = _test_data2()
141142
self.bseries2 = SparseSeries(arr, index=index, kind='block')
142143
self.iseries2 = SparseSeries(arr, index=index, kind='integer')
143144

144145
arr, index = _test_data1_zero()
145146
self.zbseries = SparseSeries(arr, index=index, kind='block',
146-
fill_value=0)
147+
fill_value=0, name='zbseries')
147148
self.ziseries = SparseSeries(arr, index=index, kind='integer',
148149
fill_value=0)
149150

@@ -222,7 +223,7 @@ def test_to_dense_preserve_name(self):
222223
result = self.bseries.to_dense()
223224
self.assertEqual(result.name, self.bseries.name)
224225

225-
def test_constructor(self):
226+
def test_aa_constructor(self):
226227
# test setup guys
227228
self.assertTrue(np.isnan(self.bseries.fill_value))
228229
tm.assert_isinstance(self.bseries.sp_index, BlockIndex)
@@ -234,12 +235,21 @@ def test_constructor(self):
234235
self.bseries.to_dense().fillna(0).values)
235236

236237
# pass SparseSeries
237-
s2 = SparseSeries(self.bseries)
238-
s3 = SparseSeries(self.iseries)
239-
s4 = SparseSeries(self.zbseries)
240-
assert_sp_series_equal(s2, self.bseries)
241-
assert_sp_series_equal(s3, self.iseries)
242-
assert_sp_series_equal(s4, self.zbseries)
238+
def _check_const(sparse, name):
239+
# use passed series name
240+
result = SparseSeries(sparse)
241+
assert_sp_series_equal(result, sparse)
242+
self.assertEqual(sparse.name, name)
243+
self.assertEqual(result.name, name)
244+
245+
# use passed arg
246+
result = SparseSeries(sparse, name='x')
247+
assert_sp_series_equal(result, sparse)
248+
self.assertEqual(result.name, 'x')
249+
250+
_check_const(self.bseries, 'bseries')
251+
_check_const(self.iseries, 'iseries')
252+
_check_const(self.zbseries, 'zbseries')
243253

244254
# Sparse time series works
245255
date_index = bdate_range('1/1/2000', periods=len(self.bseries))

0 commit comments

Comments
 (0)