如何让strftime输出年度季度?

问题描述 投票:0回答:2

我正在尝试用 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']
python pandas strftime
2个回答
3
投票

%q
格式化程序特定于
Period.strftime
,因此它必须与
Period
数据一起使用:

该方法识别与标准 Python 发行版的

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']

0
投票

我使用了一种更通用的方法从日期中获取四分之一字符串。

import pandas as pd

df = pd.DataFrame(pd.date_range('2021-01-01','2022-01-01',freq='Q'), columns = ['Date'])
df["DateQuarter"] = df['Date'].dt.strftime('%Y-Q') + 
df['Date'].dt.quarter.astype('string')
df

© www.soinside.com 2019 - 2024. All rights reserved.