2017-04-23 96 views
1

另一列我有它一個datetimedataframe,像2014-01-012016-06-05等。現在我想補充的dataframe列計算的一天年(那一年)。天計算在Python

在這個論壇上,我確實找到了一些線索是肯定的,但我用的種類和dataframe東西掙扎。 所以這個工作得很好

from datetime import datetime 

day_to_calc = today 

day_of_year = day_to_calc.timetuple().tm_yday 

day_of_year 

但今天我day_to_calc不大,但df['Date']。不過,如果我嘗試這個

df['DOY'] = df['Date'].timetuple().tm_yday 

我得到

AttributeError: 'Series' object has no attribute 'timetuple'

好了,我想我需要一個地圖功能吧? 所以我想類似的東西..

df['DOY'] = map (datetime.timetuple().tm_yday,df['Date']) 

,肯定你們怎麼看傻是;-)(但我仍然在學習Python)的

TypeError: descriptor 'timetuple' of 'datetime.datetime' object needs an argument

這樣纔有意義排序因爲我需要傳遞的日期作爲參數,SOOO ..試圖

df['DOY'] = datetime.timetuple(df['Date']).tm_yday 

TypeError: descriptor 'timetuple' requires a 'datetime.datetime' object but received a 'Series'

必須有一個簡單的方法,但我只是想不通語法:-(

回答

1

使用dayofyear功能:

import pandas as pd 
# first convert date string to datetime with a proper format string 
df = pd.DataFrame({'Date':pd.to_datetime(['2014-01-01', '2016-06-05'], format='%Y-%m-%d')}) 
# calculate day of year 
df['DOY'] = df['Date'].dt.dayofyear 
print(df) 

輸出:

 Date DOY 
0 2014-01-01 1 
1 2016-06-05 157 
+0

我知道它是簡單的:-)。顯然,我的[日期]不是日期時間畢竟,所以我必須把它轉換,但這個工程 DF [ 'DOY'] = pd.to_datetime(DF [ '日期'])。dt.dayofyear –

+0

確定。如果日期時間字符串很複雜,我添加了一個格式示例代碼。 – Serenity