我可以使用的日期范围过滤一个数据帧:熊猫据帧过滤:今天 - 今天+ 1年
df[(df['Due Date'] >= '2017-01-01') & (df['Due Date'] <= '2017-02-01')]
,但我希望能够过滤一年
我可以使用的日期范围过滤一个数据帧:熊猫据帧过滤:今天 - 今天+ 1年
df[(df['Due Date'] >= '2017-01-01') & (df['Due Date'] <= '2017-02-01')]
,但我希望能够过滤一年
将df['Due Date']
转换为时间戳,然后您可以访问年份属性进行过滤。例如:
df['Due Date'] = pd.to_datetime(df['Due date'], format='%Y-%m-%d')
df[(df['Due Date'].year >= 2017) & (df['Due Date'].year <= 2018)]
只是为了确保您的列是日期时间,与此
df['Due Date'] = pd.to_datetime(df['Due Date'])
开始考虑数据框df
df = pd.DataFrame({
'Due Date': pd.date_range('2015', periods=20, freq='Q'),
'OtherColumn': range(20)
})
你应该能够访问year
通过dt
日期访问者
df[df['Due Date'].dt.year >= 2017]
Due Date OtherColumn
8 2017-03-31 8
9 2017-06-30 9
10 2017-09-30 10
11 2017-12-31 11
12 2018-03-31 12
13 2018-06-30 13
14 2018-09-30 14
15 2018-12-31 15
16 2019-03-31 16
17 2019-06-30 17
18 2019-09-30 18
19 2019-12-31 19
或者,您也可以使用日期过滤对指数
df.set_index('Due Date')['2017']
OtherColumn
Due Date
2017-03-31 8
2017-06-30 9
2017-09-30 10
2017-12-31 11
或者
df.set_index('Due Date')['2016':'2017']
OtherColumn
Due Date
2016-03-31 4
2016-06-30 5
2016-09-30 6
2016-12-31 7
2017-03-31 8
2017-06-30 9
2017-09-30 10
2017-12-31 11
IIUC你能做到这样:
In [99]: from dateutil.relativedelta import relativedelta
In [100]: today = pd.datetime.today()
In [101]: today_next_year = today + relativedelta(years=1)
In [102]: df.loc[df['Due Date'].between(today, today_next_year)]
Out[102]:
Due Date OtherColumn
9 2017-06-30 9
10 2017-09-30 10
11 2017-12-31 11
12 2018-03-31 12
真的,我一直在寻找能够过滤365天的范围,即从当前日期到当前日期+ 365天 – user3822565