2017-08-05 26 views
0

得到一個日期列,其值如下:"1997-08-05T00:00:00"從1997年到2017年,每週5個工作日的值。Python根據日期列計算一個新列

我想在數據集中創建一個計算日期季度的新列。 例如:

1997-01-01 to 1997-03-31 should become Q1 
1997-04-01 to 1997-06-30 should become Q2 
1997-07-01 to 1997-09-30 should become Q3 
1997-10-01 to 1997-12-31 should become Q4 

不僅1997年,但所有的日期,直到2017年應該得到的所謂的「季度」新列的值。 將是巨大的,如果不考慮今年,01-01之間的日期,以03-31被賦予Q1,等等

(日期,一切看起來是這樣的:1997-08-05T00:00:00但我不需要用T00:00:00的部分)

回答

2

只要您的日期列處於日期時間格式,您可以使用熊貓to_period函數。

df['quarter'] = df['Date'].dt.to_period('Q') 

它將以類似於2017Q3的格式返回季度。你可以通過以下方式去除年份:

df['quarter'] = df['quarter'].apply(lambda x: str(x)[-2:]) 

這將給你一列Q1,Q2,Q3,Q4值。

+0

謝謝你的回答 –

0

使用「季度」。

例如:

pd.to_datetime(pd.DataFrame(['1997-08-05T00:00:00'])[0]).dt.quarter 
>>>3 

然後只需添加 「Q」 字母數字的前面。

+0

謝謝您的回答 –