【问题标题】:pandas filter dates to last most recent 3 monthspandas 过滤日期为最近 3 个月
【发布时间】:2017-07-27 06:28:55
【问题描述】:

我想将 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]

这种 sn-p 类型已经有效,但将一个月的长度硬编码为 30 天。我怎样才能使用pd.Timedelta('-3 month')(它似乎不像这样工作)来实现更强大的功能?

【问题讨论】:

    标签: python pandas datetime filter


    【解决方案1】:

    我认为您需要offsets,因为Timedelta 仅不适用于月份:

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

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

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

    【讨论】:

      猜你喜欢
      • 2023-02-06
      • 2023-03-28
      • 1970-01-01
      • 2016-12-28
      • 2021-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-22
      相关资源
      最近更新 更多