我确实有下面的代码,它给了我日期列中的季度并且工作正常。代码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

波斯汪
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
添加回答
举报
0/150
提交
取消