上个月的日期时间熊猫

时间:2017-03-29 10:22:50

标签: python pandas datetime

我有一个datetime实例声明如下:

dtDate = datetime.datetime(2016,1,1,0,0)

如何从dtDate获取前一个月和上一年?

e.g。类似的东西:

dtDate.minusOneMonth()
# to return datetime.datetime(2015,12,1,0,0)

4 个答案:

答案 0 :(得分:4)

您可以使用:

dtDate = datetime.datetime(2016,1,1,0,0)

print (dtDate - pd.DateOffset(months=1))
2015-12-01 00:00:00

print (dtDate - pd.DateOffset(years=1))
2015-01-01 00:00:00

添加s很重要,因为如果仅使用year

print (dtDate - pd.DateOffset(year=1))
0001-01-01 00:00:00 

答案 1 :(得分:2)

您可以使用DateOffset

In [32]:    
dtDate = dt.datetime(2016,1,1,0,0)
dtDate - pd.DateOffset(months=1)

Out[32]:
Timestamp('2015-12-01 00:00:00')

答案 2 :(得分:2)

操纵整个熊猫系列。

pd.DateOffset().dt.to_period("M")一起使用

df['year_month'] = df['timestamp'].dt.to_period("M")
df['prev_year_month'] = (df['timestamp'] - pd.DateOffset(months=1)).dt.to_period("M")

enter image description here

如果要继续前进一个月,请设置months=-1

答案 3 :(得分:1)

使用relativedelta中的dateutil

import datetime
import dateutil.relativedelta
dtDate = datetime.datetime(2016,1,1,0,0)
# get previous month
print ((dtDate+dateutil.relativedelta.relativedelta(months=-1)).month)
# get previous year
print ((dtDate+dateutil.relativedelta.relativedelta(years=-1)).year)

输出:

12
2015