如何在 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')
偏移量本身不是日期。
我正在尝试 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')
偏移量本身不是日期。