我试图用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']

实际yields :

['2021-%q', '2021-%q', '2021-%q', '2021-%q']

推荐答案

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

该方法识别的指令与标准Python发行版as well as the specific additional directives 101, 102, 103.time.strftime函数相同

或者直接创建一个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相关问答推荐

Python中使用时区感知日期时间对象进行时间算术的Incredit

如何让 turtle 通过点击和拖动来绘制?

Pandas 填充条件是另一列

如何在Python中并行化以下搜索?

如何请求使用Python将文件下载到带有登录名的门户网站?

Python+线程\TrocessPoolExecutor

迭代嵌套字典的值

不能使用Gekko方程'

Pandas Data Wrangling/Dataframe Assignment

无论输入分辨率如何,稳定扩散管道始终输出512 * 512张图像

以逻辑方式获取自己的pyproject.toml依赖项

具有相同图例 colored颜色 和标签的堆叠子图

Gekko中基于时间的间隔约束

如何按row_id/row_number过滤数据帧

如何获取包含`try`外部堆栈的`__traceback__`属性的异常

Django.core.exceptions.SynchronousOnlyOperation您不能从异步上下文中调用它-请使用线程或SYNC_TO_ASYNC

Regex用于匹配Python中逗号分隔的AWS区域

如何在Quarto中的标题页之前创建序言页

Django更新视图未更新

高效地计算数字数组中三行上三个点之间的Angular