Skip to content

Commit efc4a08

Browse files
committed
Merge pull request #10258 from sinhrks/sparseconst_name
BUG: SparseSeries constructor ignores input data name
2 parents 38a95d1 + e1e364e commit efc4a08

File tree

3 files changed

+24
-11
lines changed

3 files changed

+24
-11
lines changed

doc/source/whatsnew/v0.16.2.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ Bug Fixes
8282

8383

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

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

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

+20-10
Original file line numberDiff line numberDiff line change
@@ -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

@@ -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 name
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)