Pandas: Can you access rolling window items
<p>Can you access pandas rolling window object. </p>

<pre><code>rs = pd.Series(range(10))
rs.rolling(window = 3)

#print's 
Rolling [window=3,center=False,axis=0]
</code></pre>

<p>Can I get as groups?: </p>

<pre><code>[0,1,2]
[1,2,3]
[2,3,4]
</code></pre>

<p>I will start off this by saying this is reaching in to the internal impl. But if you really really wanted to compute the indexers the same way as pandas.</p>

<p>You will need v0.19.0rc1 (just about released), you can <code>conda install -c pandas pandas=0.19.0rc1</code></p>

<pre><code>In [41]: rs = pd.Series(range(10))

In [42]: rs
Out[42]: 
0    0
1    1
2    2
3    3
4    4
5    5
6    6
7    7
8    8
9    9
dtype: int64

# this reaches into an internal implementation
# the first 3 is the window, then second the minimum periods we
# need    
In [43]: start, end, _, _, _, _ = pandas._window.get_window_indexer(rs.values,3,3,None,use_mock=False)

# starting index
In [44]: start
Out[44]: array([0, 0, 0, 1, 2, 3, 4, 5, 6, 7])

# ending index
In [45]: end
Out[45]: array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])

# windo size
In [3]: end-start
Out[3]: array([1, 2, 3, 3, 3, 3, 3, 3, 3, 3])

# the indexers
In [47]: [np.arange(s, e) for s, e in zip(start, end)]
Out[47]: 
[array([0]),
 array([0, 1]),
 array([0, 1, 2]),
 array([1, 2, 3]),
 array([2, 3, 4]),
 array([3, 4, 5]),
 array([4, 5, 6]),
 array([5, 6, 7]),
 array([6, 7, 8]),
 array([7, 8, 9])]
</code></pre>

<p>So this is sort of trivial in the fixed window case, this becomes extremely useful in a variable window scenario, e.g. in 0.19.0 you can specify things like <code>2S</code> for example to aggregate by-time.</p>

<p>All of that said, getting these indexers is not particularly useful. you generally want to <em>do</em> something with the results. That is the point of the aggregation functions, or <code>.apply</code> if you want to generically aggregate.</p>

python pandas