tktktk0711
tktktk0711

Reputation: 1694

python2.7 pandas: how to the previous 2 years data in a dataframe which index by every friday of a week

I have a dataframe as following, the index is datetime(every Friday in a week).

       begin    close
   date
  2014-1-10  1.0     2.5
  2014-1-17  2.6     2.6
  ........................
  2016-12-30  3.5     3.8
  2017-6-16   4.5     4.7

I want to extract the previour 2 year data from 2017-6-16. My code is following.

import datetime
from dateutil.relativedelta import relativedelta

 df_index = df.index
 df_index_test = df_index[-1] - relativedelta(years=2)
 df_test = df[df_index_test:-1]

But it seems it is wrong, since the day of df_index_test may not in the dataframe. Thanks!

Upvotes: 1

Views: 80

Answers (1)

jezrael
jezrael

Reputation: 862591

You need boolean indexing, instead relativedelta is possible use DateOffset:

df_test = df[df.index >= df_index_test]

Sample:

rng = pd.date_range('2001-04-03', periods=10, freq='15M')
df = pd.DataFrame({'a': range(10)}, index=rng)  
print (df)
            a
2001-04-30  0
2002-07-31  1
2003-10-31  2
2005-01-31  3
2006-04-30  4
2007-07-31  5
2008-10-31  6
2010-01-31  7
2011-04-30  8
2012-07-31  9

df_test = df[df.index >= df.index[-1] - pd.offsets.DateOffset(years=2)]
print (df_test)
            a
2011-04-30  8
2012-07-31  9

Upvotes: 1

Related Questions