2 回答

TA貢獻(xiàn)1884條經(jīng)驗(yàn) 獲得超4個(gè)贊
第一個(gè)想法是將值轉(zhuǎn)換為字符串并添加前綴Q
:
order['Quarter']?=?'Q'?+?pd.to_datetime(order['Order?Date']).dt.quarter.astype(str)
或者將值轉(zhuǎn)換為季度期間,然后使用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貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
我的解決方案如下:
order['Quarter'] = "Q" + order["Qtr"].astype("str")
這基本上將您的數(shù)值轉(zhuǎn)換為字符串并將它們與Q
前面的字符串連接起來。
或者,您可以像這樣映射任意轉(zhuǎn)換函數(shù):
order['Qtr'] = pd.to_datetime(order['Order Date']).dt.quarter order['Quarter'] = df.map(lambda q: f"Q{q}")
請(qǐng)注意,這使用了我認(rèn)為需要 python 3.6+ 的 F-strings
添加回答
舉報(bào)