我正在尝试使用date_range
。我发现了一些freq
有效的值,例如BME
和BMS
,我希望能够快速查找正确的字符串来得到我想要的结果。
Pandas“Freq”标签中哪些值是有效的?
Alias Description
B business day frequency
C custom business day frequency
D calendar day frequency
W weekly frequency
M month end frequency
SM semi-month end frequency (15th and end of month)
BM business month end frequency
CBM custom business month end frequency
MS month start frequency
SMS semi-month start frequency (1st and 15th)
BMS business month start frequency
CBMS custom business month start frequency
Q quarter end frequency
BQ business quarter end frequency
QS quarter start frequency
BQS business quarter start frequency
A, Y year end frequency
BA, BY business year end frequency
AS, YS year start frequency
BAS, BYS business year start frequency
BH business hour frequency
H hourly frequency
T, min minutely frequency
S secondly frequency
L, ms milliseconds
U, us microseconds
N nanoseconds
您可以通过以下方式找到有效频率的完整列表:
pd.offsets.__all__
它返回
['BusinessDay', 'MonthBegin', 'Hour', 'Minute', 'Second', ...]
_prefix
的属性,即别名。因此,例如,可以通过以下方式找到Minute
的别名:pd.offsets.Minute._prefix # 'T'
# some other aliases
pd.offsets.MonthEnd._prefix # 'M'
pd.offsets.MonthBegin._prefix # 'MS'
实际上,如果我们查看源代码,别名字典是通过访问每个偏移类的_prefix
来构建的。
除了jezrael's post中的偏移量之外,您还可以为某些频率指定锚定后缀。
每周频率可以在一周的任何一天进行锚定:W-SUN
、W-MON
、W-TUE
、W-WED
、W-THU
、W-FRI
和W-SAT
。
例如,要将周锚定到星期一结束,可以使用W-MON
(注意它不区分大小写)。
pd.date_range('2022-01-01', '2022-02-01', freq='w-mon')
# DatetimeIndex(['2022-01-03', '2022-01-10', '2022-01-17', '2022-01-24', '2022-01-31'],
# dtype='datetime64[ns]', freq='W-MON')
季度和年度频率可以在一年的任何月份上锚定; 即以下频率可以有月份作为后缀,以便每个频率都可以锚定到该月结束:
Q
QS
BQ
BQS
A
AS
BA
BAS
有效的后缀是JAN
,FEB
,MAR
,APR
,MAY
,JUN
,JUL
,AUG
,SEP
,OCT
,NOV
和DEC
。
例如,要将年份锚定到5月初,可以使用A-MAY
。
pd.date_range('2020-01-01', '2023-02-01', freq='AS-May')
# DatetimeIndex(['2020-05-01', '2021-05-01', '2022-05-01'], dtype='datetime64[ns]', freq='AS-MAY')