Skip to content

Commit bce5434

Browse files
committed
ENH: attach offset to converted timeseries, fix camel case issues
1 parent 3138c7e commit bce5434

File tree

6 files changed

+26
-9
lines changed

6 files changed

+26
-9
lines changed

pandas/core/datetools.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1153,13 +1153,13 @@ def inferTimeRule(index, _deprecated=True):
11531153

11541154
opattern = re.compile(r'(\d*)\s*(\S+)')
11551155

1156-
def toOffset(name):
1156+
def to_offset(name):
11571157
"""
11581158
Return DateOffset object from string representation
11591159
11601160
Example
11611161
-------
1162-
getOffset('5Min') -> Minute(5)
1162+
to_offset('5Min') -> Minute(5)
11631163
"""
11641164
groups = opattern.match(name)
11651165

pandas/core/frame.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2870,7 +2870,11 @@ def shift(self, periods, offset=None, **kwds):
28702870

28712871
offset = kwds.get('timeRule', offset)
28722872
if isinstance(offset, basestring):
2873-
offset = datetools.getOffset(offset)
2873+
# deprecated code path
2874+
if isinstance(self.index, DateRange):
2875+
offset = datetools.getOffset(offset)
2876+
else:
2877+
offset = datetools.to_offset(offset)
28742878

28752879
def _shift_block(blk, indexer):
28762880
new_values = blk.values.take(indexer, axis=1)

pandas/core/generic.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,10 +145,10 @@ def convert(self, rule, method='pad', how='last', axis=0, as_index=True):
145145
axis : int, optional, default 0
146146
as_index : see synonymous argument of groupby
147147
"""
148-
from pandas.core.groupby import Tinterval, translateGrouping
148+
from pandas.core.groupby import Tinterval, translate_grouping
149149

150150
if isinstance(rule, basestring):
151-
rule = datetools.toOffset(rule)
151+
rule = datetools.to_offset(rule)
152152

153153
idx = self._get_axis(axis)
154154
if not isinstance(idx, DatetimeIndex):
@@ -170,14 +170,15 @@ def convert(self, rule, method='pad', how='last', axis=0, as_index=True):
170170
grouped = self.groupby(interval, axis=axis, as_index=as_index)
171171

172172
if isinstance(how, basestring):
173-
how = translateGrouping(how)
173+
how = translate_grouping(how)
174174

175175
result = grouped.agg(how)
176176
else:
177177
# upsampling
178178
result = self.reindex(interval.binner[1:-1].view('M8[us]'),
179179
method=method)
180180

181+
result.index.offset = rule
181182
return result
182183

183184

pandas/core/groupby.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -742,7 +742,7 @@ class Tinterval(Grouper, CustomGrouper):
742742
743743
Notes
744744
-----
745-
Use begin, end, nperiods to generate intervals that cannot be derived
745+
Use begin, end, nperiods to generate intervals that cannot be derived
746746
directly from the associated object
747747
"""
748748

@@ -1773,7 +1773,7 @@ def numpy_groupby(data, labels, axis=0):
17731773
#-----------------------------------------------------------------------
17741774
# Helper functions
17751775

1776-
def translateGrouping(how):
1776+
def translate_grouping(how):
17771777
if set(how) == set('ohlc'):
17781778
return {'open' : lambda arr: arr[0],
17791779
'low' : lambda arr: arr.min(),

pandas/core/series.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2257,7 +2257,11 @@ def shift(self, periods, offset=None, **kwds):
22572257

22582258
offset = kwds.get('timeRule', offset)
22592259
if isinstance(offset, basestring):
2260-
offset = datetools.getOffset(offset)
2260+
# deprecated code path
2261+
if isinstance(self.index, DateRange):
2262+
offset = datetools.getOffset(offset)
2263+
else:
2264+
offset = datetools.to_offset(offset)
22612265

22622266
if offset is None:
22632267
new_values = np.empty(len(self), dtype=self.dtype)

pandas/tests/test_datetime64.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,14 @@ def test_convert_olhc(self):
433433
self.assertEquals(xs['low'], s[1:6].min())
434434
self.assertEquals(xs['close'], s[5])
435435

436+
def test_convert_reconvert(self):
437+
dti = DatetimeIndex(start=datetime(2005,1,1),
438+
end=datetime(2005,1,10), offset='D')
439+
s = Series(rand(len(dti)), dti)
440+
s = s.convert('B').convert('8H')
441+
self.assertEquals(len(s), 22)
442+
443+
436444
if __name__ == '__main__':
437445
import nose
438446
nose.runmodule(argv=[__file__,'-vvs','-x','--pdb', '--pdb-failure'],

0 commit comments

Comments
 (0)