Pandas的“Freq”标签中有哪些有效值?

179

我正在尝试使用date_range。我发现了一些freq有效的值,例如BMEBMS,我希望能够快速查找正确的字符串来得到我想要的结果。

Pandas“Freq”标签中哪些值是有效的?

2个回答

267
你可以在这里找到它,称为“偏移量别名”:偏移量别名
引用如下:
给出了一些有用的常见时间序列频率的字符串别名。我们将把这些别名称为偏移量别名。
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

2
如何查找偏移别名

您可以通过以下方式找到有效频率的完整列表:

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-SUNW-MONW-TUEW-WEDW-THUW-FRIW-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

有效的后缀是JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC

例如,要将年份锚定到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')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接