计算dataframe中从datetime列到Python中另一列的日期
我有一个计算dataframe中从datetime列到Python中另一列的日期,python,datetime,Python,Datetime,我有一个dataframe,其中有一个datetime列,比如2014-01-01,2016-06-05,等等。现在我想在dataframe中添加一个列,计算一年中的某一天(对于给定的年份) 在这个论坛上,我确实找到了一些提示,但我正在努力处理类型和dataframe之类的东西。 所以这个很好用 from datetime import datetime day_to_calc = today day_of_year = day_to_calc.timetuple().tm_yday da
dataframe
,其中有一个datetime
列,比如2014-01-01
,2016-06-05
,等等。现在我想在dataframe
中添加一个列,计算一年中的某一天(对于给定的年份)
在这个论坛上,我确实找到了一些提示,但我正在努力处理类型和dataframe
之类的东西。
所以这个很好用
from datetime import datetime
day_to_calc = today
day_of_year = day_to_calc.timetuple().tm_yday
day_of_year
但是我的计算日不是今天,而是df['Date']
。然而,如果我尝试这个
df['DOY'] = df['Date'].timetuple().tm_yday
我明白了
AttributeError:“Series”对象没有属性“timetuple”
好吧,我想我可能需要一个映射函数?
所以我试着做点像
df['DOY'] = map (datetime.timetuple().tm_yday,df['Date'])
你们肯定知道这有多愚蠢;-)(但我仍在学习Python)
TypeError:“datetime.datetime”对象的描述符“timetuple”需要参数
这有点道理,因为我需要将日期作为参数传递,所以。。尝试
df['DOY'] = datetime.timetuple(df['Date']).tm_yday
TypeError:描述符“timetuple”需要“datetime.datetime”对象,但收到了“Series”
一定有一个简单的方法,但我就是搞不懂语法:-(使用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
我知道它必须很简单:-)。显然,我的[Date]毕竟不是datetime,所以我必须将其转换,但这可以将df['DOY']=pd.to_datetime(df['Date']].dt.dayofyearOK。如果datetime字符串很复杂,我在代码中添加了一个格式示例。