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
相关产品推荐
相关产品推荐

