Skip to content

Commit 8de0778

Browse files
jrebackjtratner
authored andcommitted
ENH: enable deep copy for sparse Series/Panel
1 parent 7f7b1ae commit 8de0778

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

pandas/sparse/panel.py

+13-7
Original file line numberDiff line numberDiff line change
@@ -235,19 +235,25 @@ def __setstate__(self, state):
235235
self._minor_axis = _ensure_index(com._unpickle_array(minor))
236236
self._frames = frames
237237

238-
def copy(self):
238+
def copy(self, deep=True):
239239
"""
240-
Make a (shallow) copy of the sparse panel
240+
Make a copy of the sparse panel
241241
242242
Returns
243243
-------
244244
copy : SparsePanel
245245
"""
246-
return SparsePanel(self._frames.copy(), items=self.items,
247-
major_axis=self.major_axis,
248-
minor_axis=self.minor_axis,
249-
default_fill_value=self.default_fill_value,
250-
default_kind=self.default_kind)
246+
247+
d = self._construct_axes_dict()
248+
if deep:
249+
new_data = dict((k, v.copy(deep=True)) for k, v in compat.iteritems(self._frames))
250+
d = dict((k, v.copy(deep=True)) for k, v in compat.iteritems(d))
251+
else:
252+
new_data = self._frames.copy()
253+
d['default_fill_value']=self.default_fill_value
254+
d['default_kind']=self.default_kind
255+
256+
return SparsePanel(new_data, **d)
251257

252258
def to_frame(self, filter_observations=True):
253259
"""

pandas/sparse/series.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -520,7 +520,7 @@ def copy(self, deep=True):
520520
if deep:
521521
new_data = self._data.copy()
522522

523-
return self._constructor(new_data, index=self.index,
523+
return self._constructor(new_data,
524524
sparse_index=self.sp_index,
525525
fill_value=self.fill_value, name=self.name)
526526

0 commit comments

Comments
 (0)