@@ -56,7 +56,22 @@ from pandas._libs.tslibs.ccalendar cimport (
56
56
)
57
57
from pandas._libs.tslibs.ccalendar cimport c_MONTH_NUMBERS
58
58
59
- from pandas._libs.tslibs.dtypes cimport PeriodDtypeBase
59
+ from pandas._libs.tslibs.dtypes cimport (
60
+ PeriodDtypeBase,
61
+ FR_UND,
62
+ FR_ANN,
63
+ FR_QTR,
64
+ FR_MTH,
65
+ FR_WK,
66
+ FR_BUS,
67
+ FR_DAY,
68
+ FR_HR,
69
+ FR_MIN,
70
+ FR_SEC,
71
+ FR_MS,
72
+ FR_US,
73
+ FR_NS,
74
+ )
60
75
61
76
from pandas._libs.tslibs.frequencies cimport (
62
77
attrname_to_abbrevs,
@@ -98,23 +113,6 @@ ctypedef int64_t (*freq_conv_func)(int64_t, asfreq_info*) nogil
98
113
99
114
cdef extern from * :
100
115
"""
101
- /*** FREQUENCY CONSTANTS ***/
102
- // See frequencies.pyx for more detailed variants
103
-
104
- #define FR_ANN 1000 /* Annual */
105
- #define FR_QTR 2000 /* Quarterly - December year end (default Q) */
106
- #define FR_MTH 3000 /* Monthly */
107
- #define FR_WK 4000 /* Weekly */
108
- #define FR_BUS 5000 /* Business days */
109
- #define FR_DAY 6000 /* Daily */
110
- #define FR_HR 7000 /* Hourly */
111
- #define FR_MIN 8000 /* Minutely */
112
- #define FR_SEC 9000 /* Secondly */
113
- #define FR_MS 10000 /* Millisecondly */
114
- #define FR_US 11000 /* Microsecondly */
115
- #define FR_NS 12000 /* Nanosecondly */
116
- #define FR_UND -10000 /* Undefined */
117
-
118
116
// must use npy typedef b/c int64_t is aliased in cython-generated c
119
117
// unclear why we need LL for that row.
120
118
// see https://github.com/pandas-dev/pandas/pull/34416/
@@ -128,20 +126,6 @@ cdef extern from *:
128
126
{0, 0, 0, 0, 0, 0, 1}};
129
127
"""
130
128
int64_t daytime_conversion_factor_matrix[7 ][7 ]
131
- # TODO: Can we get these frequencies from frequencies.FreqGroup?
132
- int FR_ANN
133
- int FR_QTR
134
- int FR_MTH
135
- int FR_WK
136
- int FR_DAY
137
- int FR_HR
138
- int FR_MIN
139
- int FR_SEC
140
- int FR_MS
141
- int FR_US
142
- int FR_NS
143
- int FR_BUS
144
- int FR_UND
145
129
146
130
147
131
cdef int max_value(int left, int right) nogil:
@@ -1157,30 +1141,29 @@ cdef str period_format(int64_t value, int freq, object fmt=None):
1157
1141
1158
1142
if fmt is None :
1159
1143
freq_group = get_freq_group(freq)
1160
- if freq_group == 1000 : # FR_ANN
1144
+ if freq_group == FR_ANN:
1161
1145
fmt = b' %Y '
1162
- elif freq_group == 2000 : # FR_QTR
1146
+ elif freq_group == FR_QTR:
1163
1147
fmt = b' %F Q%q '
1164
- elif freq_group == 3000 : # FR_MTH
1148
+ elif freq_group == FR_MTH:
1165
1149
fmt = b' %Y -%m '
1166
- elif freq_group == 4000 : # WK
1167
- left = period_asfreq(value, freq, 6000 , 0 )
1168
- right = period_asfreq(value, freq, 6000 , 1 )
1169
- return f" {period_format(left, 6000)}/{period_format(right, 6000)}"
1170
- elif (freq_group == 5000 # BUS
1171
- or freq_group == 6000 ): # DAY
1150
+ elif freq_group == FR_WK:
1151
+ left = period_asfreq(value, freq, FR_DAY, 0 )
1152
+ right = period_asfreq(value, freq, FR_DAY, 1 )
1153
+ return f" {period_format(left, FR_DAY)}/{period_format(right, FR_DAY)}"
1154
+ elif freq_group == FR_BUS or freq_group == FR_DAY:
1172
1155
fmt = b' %Y -%m -%d '
1173
- elif freq_group == 7000 : # HR
1156
+ elif freq_group == FR_HR:
1174
1157
fmt = b' %Y -%m -%d %H :00'
1175
- elif freq_group == 8000 : # MIN
1158
+ elif freq_group == FR_MIN:
1176
1159
fmt = b' %Y -%m -%d %H :%M '
1177
- elif freq_group == 9000 : # SEC
1160
+ elif freq_group == FR_SEC:
1178
1161
fmt = b' %Y -%m -%d %H :%M :%S '
1179
- elif freq_group == 10000 : # MILLISEC
1162
+ elif freq_group == FR_MS:
1180
1163
fmt = b' %Y -%m -%d %H :%M :%S .%l '
1181
- elif freq_group == 11000 : # MICROSEC
1164
+ elif freq_group == FR_US:
1182
1165
fmt = b' %Y -%m -%d %H :%M :%S .%u '
1183
- elif freq_group == 12000 : # NANOSEC
1166
+ elif freq_group == FR_NS:
1184
1167
fmt = b' %Y -%m -%d %H :%M :%S .%n '
1185
1168
else :
1186
1169
raise ValueError (f" Unknown freq: {freq}" )
0 commit comments