我正在尝试用 python 创建一个年度季度列表;根据文档(https://pandas.pydata.org/docs/reference/api/pandas.Period.strftime.html),
%q
(我相信)应该输出日历季度的整数表示,而不是我得到的输出只是字面上的%q
。
输入:
pd.date_range('2021-01-01','2022-01-01',freq='Q').strftime('%Y-%q').tolist()
预期输出:
['2021-01', '2021-02', '2021-03', '2021-04']
实际产量:
['2021-%q', '2021-%q', '2021-%q', '2021-%q']
%q
格式化程序特定于Period.strftime
,因此它必须与Period
数据一起使用:
函数相同的指令,以及特定的附加指令time.strftime
、%f
、%F
。%q
period_range
(但请注意,它包括结束日期,与 date_range
不同):
periods = pd.period_range('2021-01-01', '2022-01-01', freq='Q')
# PeriodIndex(['2021Q1', '2021Q2', '2021Q3', '2021Q4', '2022Q1'], dtype='period[Q-DEC]')
periods.strftime('%Y-0%q').tolist()
# ['2021-01', '2021-02', '2021-03', '2021-04', '2022-01']
或者将现有的
DatetimeIndex
转换为 PeriodIndex
:
dates = pd.date_range('2021-01-01', '2022-01-01', freq='Q')
# DatetimeIndex(['2021-03-31', '2021-06-30', '2021-09-30', '2021-12-31'], dtype='datetime64[ns]', freq='Q-DEC')
pd.PeriodIndex(dates).strftime('%Y-0%q').tolist()
# ['2021-01', '2021-02', '2021-03', '2021-04']