我可以使用的日期範圍過濾一個數據幀:熊貓據幀過濾:今天 - 今天+ 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