You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何将datetime列转为YYYYQx格式?尝试代码无返回

在Python Pandas中将datetime列转为YYYYQx格式的简便方法

当然有啦!在Pandas里处理这种日期转季度格式的需求,其实有好几种简洁又高效的方式,比你之前尝试的zip方法要省心多了,我给你整理几个常用方案:

方法一:直接矢量化字符串拼接

利用Pandas的矢量化操作,不用手动转列表或者循环,直接对整列进行处理,效率很高:

DF_A['quarter'] = DF_A['period'].dt.year.astype(str) + 'Q' + DF_A['period'].dt.quarter.astype(str)

这里需要把dt.year和dt.quarter返回的数值类型转成字符串,才能和'Q'完成拼接,一步就能生成目标格式的新列。

方法二:使用dt.to_period(最简便)

这是最简洁的方式,Pandas自带的周期转换方法直接就能生成季度格式:

DF_A['quarter'] = DF_A['period'].dt.to_period('Q').astype(str)

to_period('Q')会把datetime对象转换成季度周期类型(比如2018Q1这种格式的周期对象),再转成字符串就完全符合你的需求了,几乎是一行搞定!

关于你之前的zip方法为什么没返回结果

你之前的代码没得到结果,大概率是因为zip()返回的是一个迭代器对象,而不是直接可使用的列表或列数据。如果非要用这种方式,需要把迭代器转成可拼接的列表,再赋值给列:

length_of_DF = len(DF_A)
DF_A['quarter'] = [''.join(map(str, item)) for item in zip(DF_A['period'].dt.year, ['Q']*length_of_DF, DF_A['period'].dt.quarter)]

不过这种方法需要逐行处理,效率远不如前面两种矢量化操作,所以更推荐前两种方案。

内容的提问来源于stack exchange,提问作者Jespar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:13:44