切片pandas系列通过设置特定索引的行数

时间:2016-10-22 00:20:52

标签: python pandas

考虑pd.Series s

import pandas as pd
import numpy as np

tidx = pd.date_range('2012-12-31', periods=261)
s = pd.Series(np.arange(len(tidx)), tidx)

假设我希望获得一个以期限'2013-02-22'

结束的14期间窗口

我希望结果是

2013-02-09    40
2013-02-10    41
2013-02-11    42
2013-02-12    43
2013-02-13    44
2013-02-14    45
2013-02-15    46
2013-02-16    47
2013-02-17    48
2013-02-18    49
2013-02-19    50
2013-02-20    51
2013-02-21    52
2013-02-22    53
Freq: D, dtype: int32

2 个答案:

答案 0 :(得分:2)

avoid chained indexing, 您可以使用s.index.get_loc查找与2013-02-22关联的位置索引,并使用iloc和位置索引进行选择:

In [93]: i = s.index.get_loc('2013-02-22')+1; s.iloc[i-14:i]
Out[93]: 
2013-02-09    40
2013-02-10    41
2013-02-11    42
2013-02-12    43
2013-02-13    44
2013-02-14    45
2013-02-15    46
2013-02-16    47
2013-02-17    48
2013-02-18    49
2013-02-19    50
2013-02-20    51
2013-02-21    52
2013-02-22    53
Freq: D, dtype: int64

答案 1 :(得分:1)

In [12]: s.ix[:'2013-02-22'].iloc[-14:]
Out[12]:
2013-02-09    40
2013-02-10    41
2013-02-11    42
2013-02-12    43
2013-02-13    44
2013-02-14    45
2013-02-15    46
2013-02-16    47
2013-02-17    48
2013-02-18    49
2013-02-19    50
2013-02-20    51
2013-02-21    52
2013-02-22    53
Freq: D, dtype: int32