如何让 strftime 输出每年的季度?
How to get strftime to output yearly quarters?
我正在尝试在 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
数据一起使用:
The method recognizes the same directives as the time.strftime
function of the standard Python distribution, as well as the specific additional directives %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']
我正在尝试在 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
数据一起使用:
The method recognizes the same directives as the
time.strftime
function of the standard Python distribution, as well as the specific additional directives%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']