为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

有只小跳蛙 2023-05-16 15:09:38
我确实有下面的代码,它给了我日期列中的季度并且工作正常。代码order['Qtr'] = pd.to_datetime(order['Order Date']).dt.quarter输出我的要求是我想在每个季度的开头添加Q,列名为Quarter。我想要如下输出。所需输出
查看完整描述

2 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

第一个想法是将值转换为字符串并添加前缀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 Quarter

0 2017-04-03      Q2

1 2017-09-20      Q3

2 2018-03-09      Q1

3 2018-08-26      Q3

4 2019-02-12      Q1

5 2019-08-01      Q3

6 2020-01-18      Q1

7 2020-07-06      Q3

8 2020-12-23      Q4

9 2021-06-11      Q2


查看完整回答
反对 回复 2023-05-16
?
波斯汪

TA贡献1811条经验 获得超4个赞

我的解决方案如下:

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


查看完整回答
反对 回复 2023-05-16
  • 2 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信