|
1 | 1 | from pandas import (DataFrame, Series, Period, PeriodIndex, date_range,
|
2 | 2 | period_range)
|
| 3 | +from pandas.tseries.frequencies import to_offset |
3 | 4 |
|
4 | 5 |
|
5 | 6 | class PeriodProperties(object):
|
@@ -34,26 +35,47 @@ def time_now(self, freq):
|
34 | 35 | def time_asfreq(self, freq):
|
35 | 36 | self.per.asfreq('A')
|
36 | 37 |
|
| 38 | +class PeriodConstructor(object): |
| 39 | + params = [['D'], [True, False]] |
| 40 | + param_names = ['freq', 'is_offset'] |
| 41 | + |
| 42 | + def setup(self, freq, is_offset): |
| 43 | + if is_offset: |
| 44 | + self.freq = to_offset(freq) |
| 45 | + else: |
| 46 | + self.freq = freq |
| 47 | + |
| 48 | + def time_period_constructor(self, freq, is_offset): |
| 49 | + Period('2012-06-01', freq=freq) |
| 50 | + |
37 | 51 |
|
38 | 52 | class PeriodIndexConstructor(object):
|
39 | 53 |
|
40 |
| - params = ['D'] |
41 |
| - param_names = ['freq'] |
| 54 | + params = [['D'], [True, False]] |
| 55 | + param_names = ['freq', 'is_offset'] |
42 | 56 |
|
43 |
| - def setup(self, freq): |
| 57 | + def setup(self, freq, is_offset): |
44 | 58 | self.rng = date_range('1985', periods=1000)
|
45 | 59 | self.rng2 = date_range('1985', periods=1000).to_pydatetime()
|
46 | 60 | self.ints = list(range(2000, 3000))
|
| 61 | + self.daily_ints = date_range('1/1/2000', periods=1000, freq=freq).strftime('%Y%m%d').map(int) |
| 62 | + if is_offset: |
| 63 | + self.freq = to_offset(freq) |
| 64 | + else: |
| 65 | + self.freq = freq |
47 | 66 |
|
48 |
| - def time_from_date_range(self, freq): |
| 67 | + def time_from_date_range(self, freq, is_offset): |
49 | 68 | PeriodIndex(self.rng, freq=freq)
|
50 | 69 |
|
51 |
| - def time_from_pydatetime(self, freq): |
| 70 | + def time_from_pydatetime(self, freq, is_offset): |
52 | 71 | PeriodIndex(self.rng2, freq=freq)
|
53 | 72 |
|
54 |
| - def time_from_ints(self, freq): |
| 73 | + def time_from_ints(self, freq, is_offset): |
55 | 74 | PeriodIndex(self.ints, freq=freq)
|
56 | 75 |
|
| 76 | + def time_from_ints_daily(self, freq, is_offset): |
| 77 | + PeriodIndex(self.daily_ints, freq=freq) |
| 78 | + |
57 | 79 |
|
58 | 80 | class DataFramePeriodColumn(object):
|
59 | 81 |
|
|
0 commit comments