我問了同樣的問題R,我得到了答案,我也希望得到它Python。
我有一個如下所示的資料集:
tenor delivery_window
<chr> <chr>
1 month Nov 22
2 quarter Jan 22
3 year Cal 24
4 year Cal 22
5 month Feb 22
6 quarter Jan 21
7 month Sep 22
8 quarter Jan 21
9 month Jun 21
10 month Aug 21
我想把它變成這樣的東西:
tenor delivery_window new_tenor
<chr> <chr> <chr>
1 month Nov 22 Nov 22
2 quarter Jan 22 Q1 22
3 year Cal 24 Cal 24
4 year Cal 22 Cal 22
5 month Feb 22 Feb 22
6 quarter Jan 21 Q1 21
7 month Sep 22 Sep 22
8 quarter Jan 21 Q1 21
9 month Jun 21 Jun 21
10 month Aug 21 Aug 21
也就是說,如果tenor是quarter,我只想顯示對應于 的季度delivery window,而不是月份。每月和每年的期限可以保持不變。
new_tenor應該是Q1 YY幾個月從Jan YY到,幾個月從到Mar YY,幾個月從到,和幾個月從到。Q2 YYApr YYJun YYQ3 YYJul YYSep YYQ4 YYOct YYDec YY
有人可以再次幫助我嗎?先感謝您。
uj5u.com熱心網友回復:
我想這就是你要找的:
def ConvtoQuarter(tenor, delivery):
if tenor == "quarter":
if delivery[:3] in ['Jan', 'Feb', 'Mar']:
return "Q1 " delivery[-2:]
elif delivery[:3] in ['Apr', 'May', 'Jun']:
return "Q2 " delivery[-2:]
elif delivery[:3] in ['Jul', 'Aug', 'Sep']:
return "Q3 " delivery[-2:]
elif delivery[:3] in ['Oct', 'Nov', 'Dec']:
return "Q4 " delivery[-2:]
else:
return delivery
df = pd.DataFrame({"tenor":['month', 'quarter', 'year', 'year', 'month', 'quarter'],
"delivery":['Nov 22', 'Jan 22', 'Cal 22', 'Cal 22', 'Feb 22', 'Jan 21']})
df['NewTenor'] = df.apply(lambda x: ConvtoQuarter(x['tenor'], x['delivery']), axis=1)
df
輸出:
tenor delivery NewTenor
0 month Nov 22 Nov 22
1 quarter Jan 22 Q1 22
2 year Cal 22 Cal 22
3 year Cal 22 Cal 22
4 month Feb 22 Feb 22
5 quarter Jan 21 Q1 21
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/481373.html
