我正在尝试从两个日期之间的系列中选择数据。它使用df.loc和mask工作正常,但我想让它自动获取当前年份数据和去年数据,而无需手动输入。
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'
但我之前没有时间戳,错误是ValueError: Cannot convert Period to Timestamp unambiguously. Use to_timestamp
我猜测有一种简单的方法可以做到这一点我完全失踪了。
答案 0 :(得分:1)
从当前年份和去年的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')
抵消不是自己的日期。