如何在 Python 中 select 当前和去年的日期范围

How to select a date range for current and last year in Python

我正在尝试 select 来自两个日期之间的一系列数据。使用 df.loc 和掩码工作正常,但我想让它自动获取当年数据和去年数据,而无需手动输入。

f 是输入

f.head(3)
Out[37]: 
0   2011-08-02
1   2011-08-12
2   2011-08-15
Name: receiveddate, dtype: datetime64[ns]

那么我的代码是

start_date2014 = datetime.datetime(2014, 4, 1)
end_date2014 = datetime.datetime(2014, 3, 31)
mask2014 = (f >= start_date2014) & (f <= end_date2014)
DisputesFY2014 = f.loc[mask2014]
DisputesFY2014 = DisputesFY2014.value_counts()

我正在考虑使用 pandas 和 yearend 和 yearbegin,但我在时间戳语法中遇到错误。我试过了:

start_date2015 = pd.tseries.offsets.YearBegin(1)#datetime.datetime(2015, 4, 1)
start_date2015 = start_date2015.to_timestamp

并得到了 AttributeError: 'YearBegin' object has no attribute 'to_timestamp' 但我之前没有 to_timestamp 并且错误是 ValueError: Cannot convert Period to Timestamp unambiguously. Use to_timestamp 我猜有一个简单的方法可以做到这一点我完全失踪。

到select本年度和去年f的所有行:

year = pd.datetime.now().year
mask = f.dt.year.isin([year-1, year])
f.loc[mask]

或者,您可以使用以下方法获取当前年份:

In [119]: pd.to_datetime('now').year
Out[119]: 2015

偏移量,例如 pd.tseries.offsets.YearBegin(1) 用于从时间戳中添加或减去时间量:

In [122]: pd.to_datetime('now')
Out[122]: Timestamp('2015-08-20 17:40:59')

In [123]: pd.to_datetime('now') + pd.tseries.offsets.YearBegin(1)
Out[123]: Timestamp('2016-01-01 17:41:04')

偏移量本身不是日期。