我有一个dataframe
,其中包含datetime
列,例如2014-01-01
,2016-06-05
等。现在我想在{{1}中添加一列计算一年中的某一天(特定年份)。
在这个论坛上我确实找到了一些提示,但我正在努力解决类型和dataframe
的问题。
所以这很好用
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']
我得到了
AttributeError:'Series'对象没有属性'timetuple'
好的,所以我想我可能需要一个地图功能? 所以我正在尝试类似......
df['DOY'] = df['Date'].timetuple().tm_yday
你肯定会看到这是多么愚蠢;-)(但我还在学习Python)
TypeError:'datetime.datetime'对象的描述符'timetuple'需要一个参数
所以这是有道理的,因为我需要将日期作为参数传递,sooo ..尝试
df['DOY'] = map (datetime.timetuple().tm_yday,df['Date'])
TypeError:描述符'timetuple'需要'datetime.datetime'对象但收到'Series'
必须有一个简单的方法,但我无法弄清楚语法: - (
答案 0 :(得分: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