2017-03-07 112 views
1

我想过滤一个熊猫数据框到最近3个月。pandas过滤条件最近3个月

import pandas as pd 
dates = pd.DataFrame(['2016-11-01', '2016-12-01', '2017-01-01', '2017-02-01', '2017-03-01'], columns=['date']) 
dates.date = pd.DatetimeIndex(dates.date) 
import datetime 
today = datetime.date.today() 
first = today.replace(day=1) 
lastMonth = first - datetime.timedelta(days=90) 
print (lastMonth.strftime("%Y-%m")) 
dates[dates.date >= lastMonth] 

这段代码已经有效,但是有一个月的硬编码为30天。我如何使用pd.Timedelta('-3 month')(看起来不像这样工作)来实现更强大的功能?

回答

2

我想你需要offsets,因为只有Timedelta不个月的工作:

lastMonth = first - pd.offsets.MonthBegin(3) 
#lastMonth = first - pd.offsets.relativedelta(months=3) 

lastMonth = first - pd.Timedelta(months=3) 

ValueError: cannot construct a Timedelta from the passed arguments, allowed keywords are [weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds]