如何在每季度初获得“Q”

我确实有下面的代码,它给了我日期列中的季度并且工作正常。

代码

order['Qtr'] = pd.to_datetime(order['Order Date']).dt.quarter

输出

http://img3.mukewang.com/64632c410001730f02060154.jpg

我的要求是我想在每个季度的开头添加Q,列名为Quarter。我想要如下输出。

所需输出

http://img3.mukewang.com/64632c4a0001fe4702020181.jpg

有只小跳蛙
浏览 125回答 2
2回答

慕村9548890

第一个想法是将值转换为字符串并添加前缀Q:order['Quarter'] = 'Q' + pd.to_datetime(order['Order Date']).dt.quarter.astype(str)或者将值转换为季度期间,然后使用strftime:rng = pd.date_range('2017-04-03', periods=10, freq='170D')order = pd.DataFrame({'Order Date': rng})  order['Quarter'] = pd.to_datetime(order['Order Date']).dt.to_period('q').dt.strftime('Q%q')print (order)  Order Date Quarter0 2017-04-03      Q21 2017-09-20      Q32 2018-03-09      Q13 2018-08-26      Q34 2019-02-12      Q15 2019-08-01      Q36 2020-01-18      Q17 2020-07-06      Q38 2020-12-23      Q49 2021-06-11      Q2

波斯汪

我的解决方案如下:order['Quarter'] = "Q" + order["Qtr"].astype("str")这基本上将您的数值转换为字符串并将它们与Q前面的字符串连接起来。或者,您可以像这样映射任意转换函数:order['Qtr'] = pd.to_datetime(order['Order Date']).dt.quarter order['Quarter'] = df.map(lambda q: f"Q{q}")请注意,这使用了我认为需要 python 3.6+ 的 F-strings
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python