Pandas过滤日期为最近3个月

2024-06-25 22:51:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我想过滤最近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')(它似乎不是这样工作的)来实现一个更健壮的函数?在


Tags: columns数据importdataframepandastodaydatetimedate
1条回答
网友
1楼 · 发布于 2024-06-25 22:51:21

我认为您需要^{},因为Timedelta仅适用于月份:

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

^{pr2}$

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

相关问题 更多 >