Skip to content

Commit 83d3c4c

Browse files
authored
REF: move offset_to_period_map from liboffsets (pandas-dev#34447)
1 parent 484e0b4 commit 83d3c4c

File tree

2 files changed

+53
-50
lines changed

2 files changed

+53
-50
lines changed

pandas/_libs/tslibs/offsets.pyx

+1-48
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ from pandas._libs.tslibs.util cimport is_integer_object, is_datetime64_object
3030
from pandas._libs.tslibs.base cimport ABCTimestamp
3131

3232
from pandas._libs.tslibs.ccalendar import (
33-
MONTHS, DAYS, MONTH_ALIASES, MONTH_TO_CAL_NUM, weekday_to_int, int_to_weekday,
33+
MONTH_ALIASES, MONTH_TO_CAL_NUM, weekday_to_int, int_to_weekday,
3434
)
3535
from pandas._libs.tslibs.ccalendar cimport get_days_in_month, dayofweek
3636
from pandas._libs.tslibs.conversion cimport (
@@ -45,53 +45,6 @@ from pandas._libs.tslibs.tzconversion cimport tz_convert_single
4545

4646
from .timedeltas cimport delta_to_nanoseconds
4747

48-
# ---------------------------------------------------------------------
49-
# Constants
50-
51-
_offset_to_period_map = {
52-
'WEEKDAY': 'D',
53-
'EOM': 'M',
54-
'BM': 'M',
55-
'BQS': 'Q',
56-
'QS': 'Q',
57-
'BQ': 'Q',
58-
'BA': 'A',
59-
'AS': 'A',
60-
'BAS': 'A',
61-
'MS': 'M',
62-
'D': 'D',
63-
'C': 'C',
64-
'B': 'B',
65-
'T': 'T',
66-
'S': 'S',
67-
'L': 'L',
68-
'U': 'U',
69-
'N': 'N',
70-
'H': 'H',
71-
'Q': 'Q',
72-
'A': 'A',
73-
'W': 'W',
74-
'M': 'M',
75-
'Y': 'A',
76-
'BY': 'A',
77-
'YS': 'A',
78-
'BYS': 'A'}
79-
80-
need_suffix = ['QS', 'BQ', 'BQS', 'YS', 'AS', 'BY', 'BA', 'BYS', 'BAS']
81-
82-
for __prefix in need_suffix:
83-
for _m in MONTHS:
84-
key = f'{__prefix}-{_m}'
85-
_offset_to_period_map[key] = _offset_to_period_map[__prefix]
86-
87-
for __prefix in ['A', 'Q']:
88-
for _m in MONTHS:
89-
_alias = f'{__prefix}-{_m}'
90-
_offset_to_period_map[_alias] = _alias
91-
92-
for _d in DAYS:
93-
_offset_to_period_map[f'W-{_d}'] = f'W-{_d}'
94-
9548

9649
# ---------------------------------------------------------------------
9750
# Misc Helpers

pandas/tseries/frequencies.py

+52-2
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,18 @@
55

66
from pandas._libs.algos import unique_deltas
77
from pandas._libs.tslibs import Timestamp
8-
from pandas._libs.tslibs.ccalendar import MONTH_ALIASES, MONTH_NUMBERS, int_to_weekday
8+
from pandas._libs.tslibs.ccalendar import (
9+
DAYS,
10+
MONTH_ALIASES,
11+
MONTH_NUMBERS,
12+
MONTHS,
13+
int_to_weekday,
14+
)
915
from pandas._libs.tslibs.fields import build_field_sarray
1016
from pandas._libs.tslibs.offsets import ( # noqa:F401
1117
DateOffset,
1218
Day,
1319
_get_offset,
14-
_offset_to_period_map,
1520
to_offset,
1621
)
1722
from pandas._libs.tslibs.parsing import get_rule_month
@@ -39,6 +44,51 @@
3944
# ---------------------------------------------------------------------
4045
# Offset names ("time rules") and related functions
4146

47+
_offset_to_period_map = {
48+
"WEEKDAY": "D",
49+
"EOM": "M",
50+
"BM": "M",
51+
"BQS": "Q",
52+
"QS": "Q",
53+
"BQ": "Q",
54+
"BA": "A",
55+
"AS": "A",
56+
"BAS": "A",
57+
"MS": "M",
58+
"D": "D",
59+
"C": "C",
60+
"B": "B",
61+
"T": "T",
62+
"S": "S",
63+
"L": "L",
64+
"U": "U",
65+
"N": "N",
66+
"H": "H",
67+
"Q": "Q",
68+
"A": "A",
69+
"W": "W",
70+
"M": "M",
71+
"Y": "A",
72+
"BY": "A",
73+
"YS": "A",
74+
"BYS": "A",
75+
}
76+
77+
_need_suffix = ["QS", "BQ", "BQS", "YS", "AS", "BY", "BA", "BYS", "BAS"]
78+
79+
for _prefix in _need_suffix:
80+
for _m in MONTHS:
81+
key = f"{_prefix}-{_m}"
82+
_offset_to_period_map[key] = _offset_to_period_map[_prefix]
83+
84+
for _prefix in ["A", "Q"]:
85+
for _m in MONTHS:
86+
_alias = f"{_prefix}-{_m}"
87+
_offset_to_period_map[_alias] = _alias
88+
89+
for _d in DAYS:
90+
_offset_to_period_map[f"W-{_d}"] = f"W-{_d}"
91+
4292

4393
def get_period_alias(offset_str: str) -> Optional[str]:
4494
"""

0 commit comments

Comments
 (0)