99
1010from pandas .tseries .frequencies import to_offset
1111
12- from .tslib import _sizes
12+ from .tslib import _sizes , _tzs
13+
14+ try :
15+ from pandas ._libs .tslibs .vectorized import dt64arr_to_periodarr
16+ except ImportError :
17+ from pandas ._libs .tslibs .period import dt64arr_to_periodarr
1318
1419
1520class PeriodProperties :
@@ -75,26 +80,29 @@ def time_period_constructor(self, freq, is_offset):
7580 Period ("2012-06-01" , freq = freq )
7681
7782
83+ _freq_ints = [
84+ 1000 ,
85+ 1011 , # Annual - November End
86+ 2000 ,
87+ 2011 , # Quarterly - November End
88+ 3000 ,
89+ 4000 ,
90+ 4006 , # Weekly - Saturday End
91+ 5000 ,
92+ 6000 ,
93+ 7000 ,
94+ 8000 ,
95+ 9000 ,
96+ 10000 ,
97+ 11000 ,
98+ 12000 ,
99+ ]
100+
101+
78102class TimePeriodArrToDT64Arr :
79103 params = [
80104 _sizes ,
81- [
82- 1000 ,
83- 1011 , # Annual - November End
84- 2000 ,
85- 2011 , # Quarterly - November End
86- 3000 ,
87- 4000 ,
88- 4006 , # Weekly - Saturday End
89- 5000 ,
90- 6000 ,
91- 7000 ,
92- 8000 ,
93- 9000 ,
94- 10000 ,
95- 11000 ,
96- 12000 ,
97- ],
105+ _freq_ints ,
98106 ]
99107 param_names = ["size" , "freq" ]
100108
@@ -104,3 +112,19 @@ def setup(self, size, freq):
104112
105113 def time_periodarray_to_dt64arr (self , size , freq ):
106114 periodarr_to_dt64arr (self .i8values , freq )
115+
116+
117+ class TimeDT64ArrToPeriodArr :
118+ params = [
119+ _sizes ,
120+ _freq_ints ,
121+ _tzs ,
122+ ]
123+ param_names = ["size" , "freq" , "tz" ]
124+
125+ def setup (self , size , freq , tz ):
126+ arr = np .arange (10 , dtype = "i8" ).repeat (size // 10 )
127+ self .i8values = arr
128+
129+ def time_dt64arr_to_periodarr (self , size , freq , tz ):
130+ dt64arr_to_periodarr (self .i8values , freq , tz )
0 commit comments