计算数据框中的日期从日期时间列到 Python 中的另一列

Pam*_*uis 4 python datetime

我有dataframe一个datetime列在里面,像2014-01-012016-06-05等等。现在我想在添加一列dataframe一年的天(对于给定的年份)计算。

在这个论坛上,我确实找到了一些提示,但我正在为类型和dataframe内容而苦苦挣扎。所以这很好用

from datetime import datetime

day_to_calc = today

day_of_year = day_to_calc.timetuple().tm_yday

day_of_year
Run Code Online (Sandbox Code Playgroud)

但我day_to_calc的不是今天,而是df['Date']。但是,如果我尝试这个

df['DOY'] = df['Date'].timetuple().tm_yday
Run Code Online (Sandbox Code Playgroud)

我得到

AttributeError: 'Series' 对象没有属性 'timetuple'

好的,所以我想我可能需要一个地图功能?所以我正在尝试类似..

df['DOY'] = map (datetime.timetuple().tm_yday,df['Date'])
Run Code Online (Sandbox Code Playgroud)

你们肯定知道那是多么愚蠢;-)(但我仍在学习 Python)

类型错误:“datetime.datetime”对象的描述符“timetuple”需要一个参数

所以这是有道理的,因为我需要将日期作为参数传递,sooo .. 尝试

df['DOY'] = datetime.timetuple(df['Date']).tm_yday 
Run Code Online (Sandbox Code Playgroud)

类型错误:描述符“timetuple”需要“datetime.datetime”对象但收到“Series”

一定有一个简单的方法,但我就是无法弄清楚语法:-(

Ser*_*ity 5

使用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)
Run Code Online (Sandbox Code Playgroud)

输出:

        Date  DOY
0 2014-01-01    1
1 2016-06-05  157
Run Code Online (Sandbox Code Playgroud)