2017-06-16 49 views
1

我有一個數據框如下,索引是datetime(每週星期五)。python2.7熊貓:如何在一個數據幀中的前一個2年數據每週星期五索引

 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 

我想從2017年6月16日提取以前的2年數據。我的代碼如下。

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] 

但它似乎是錯誤的,因爲df_index_test的一天可能不在數據框中。 謝謝!

回答

1

你需要boolean indexing,而不是relativedelta可以使用DateOffset

df_test = df[df.index >= df_index_test] 

樣品:

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 
+0

感謝@ jezrael,還有另外一個問題:HTTPS://stackoverflow.com/questions/44649687/python2-7-dataframe-add-new-column-from-existing-column-value – tktktk0711

+0

我添加了答案,但它確實很複雜。請檢查一下。 – jezrael