大熊猫过滤日期持续最近3个月

时间:2017-03-07 06:30:41

标签: python pandas datetime filter

我想将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')(这似乎不像这样工作)来实现更强大的功能?

1 个答案:

答案 0 :(得分:4)

我认为您需要offsets,因为Object.values()仅在几个月内不起作用:

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

ValueError:无法从传递的参数构造Timedelta,允许的关键字是       [周,天,小时,分钟,秒,毫秒,微秒,纳秒]