def shift(self, periods, freq=None, **kwds): """ Analogous to DataFrame.shift """ from pandas.core.series import _resolve_offset offset = _resolve_offset(freq, kwds) new_series = {} if offset is None: new_index = self.index for col, s in self.iteritems(): new_series[col] = s.shift(periods) else: new_index = self.index.shift(periods, offset) for col, s in self.iteritems(): new_series[col] = SparseSeries( s.sp_values, index=new_index, sparse_index=s.sp_index, fill_value=s.fill_value ) return SparseDataFrame( new_series, index=new_index, columns=self.columns, default_fill_value=self.default_fill_value, default_kind=self.default_kind, )
def shift(self, periods, freq=None, **kwds): """ Analogous to Series.shift """ from pandas.core.series import _resolve_offset offset = _resolve_offset(freq, kwds) # no special handling of fill values yet if not isnull(self.fill_value): dense_shifted = self.to_dense().shift(periods, freq=freq, **kwds) return dense_shifted.to_sparse(fill_value=self.fill_value, kind=self.kind) if periods == 0: return self.copy() if offset is not None: return SparseSeries(self.sp_values, sparse_index=self.sp_index, index=self.index.shift(periods, offset), fill_value=self.fill_value) int_index = self.sp_index.to_int_index() new_indices = int_index.indices + periods start, end = new_indices.searchsorted([0, int_index.length]) new_indices = new_indices[start:end] new_sp_index = IntIndex(len(self), new_indices) if isinstance(self.sp_index, BlockIndex): new_sp_index = new_sp_index.to_block_index() return SparseSeries(self.sp_values[start:end].copy(), index=self.index, sparse_index=new_sp_index, fill_value=self.fill_value)
def shift(self, periods, freq=None, **kwds): """ Analogous to Series.shift """ from pandas.core.series import _resolve_offset offset = _resolve_offset(freq, kwds) # no special handling of fill values yet if not isnull(self.fill_value): dense_shifted = self.to_dense().shift(periods, freq=freq, **kwds) return dense_shifted.to_sparse(fill_value=self.fill_value, kind=self.kind) if periods == 0: return self.copy() if offset is not None: return self._constructor(self.sp_values, sparse_index=self.sp_index, index=self.index.shift(periods, offset), fill_value=self.fill_value) int_index = self.sp_index.to_int_index() new_indices = int_index.indices + periods start, end = new_indices.searchsorted([0, int_index.length]) new_indices = new_indices[start:end] new_sp_index = IntIndex(len(self), new_indices) if isinstance(self.sp_index, BlockIndex): new_sp_index = new_sp_index.to_block_index() return self._constructor(self.sp_values[start:end].copy(), index=self.index, sparse_index=new_sp_index, fill_value=self.fill_value)
def shift(self, periods, freq=None, **kwds): """ Analogous to DataFrame.shift """ from pandas.core.series import _resolve_offset offset = _resolve_offset(freq, kwds) new_series = {} if offset is None: new_index = self.index for col, s in compat.iteritems(self): new_series[col] = s.shift(periods) else: new_index = self.index.shift(periods, offset) for col, s in compat.iteritems(self): new_series[col] = SparseSeries(s.sp_values, index=new_index, sparse_index=s.sp_index, fill_value=s.fill_value) return SparseDataFrame(new_series, index=new_index, columns=self.columns, default_fill_value=self.default_fill_value, default_kind=self.default_kind)