计算数据帧中从datetime列到Python中另一列的一年中的某一天

时间:2017-04-23 12:39:37

标签: python datetime

我有一个dataframe,其中包含datetime列,例如2014-01-012016-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'

必须有一个简单的方法,但我无法弄清楚语法: - (

1 个答案:

答案 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