API/ENH: master issue for pd.rolling_apply
Catchall for `rolling_*` issues:
- [x] #12537 exclude nuiscance columns
- [ ] #12536 fully support timedeltas
- [ ] #4130 (return type of `rolling_apply`)
- [x] #3185 (stop using `np.apply_along_axis`)
- [x] #5071, #12950 (pass frames, operate 2-D)
- [x] #9413 `rolling_quantile`
- [ ] #9481 `rolling_idxmax`
- [ ] #10759 rolling_qcut 
- [ ] #11446, #20773  casting in `.apply`
- [x] #12595 casting in all window functions (min/max are good)
- [x] #10702 namespacing (though prob just create a `Rolling` object), #11603 
- [x] #12535 testing of datetimelike with nans
- [x] #12541 count should be integer dtype (and deal with infs)
- [ ] #15095 Table-wise

---

Hi all,

I intended to apply a function that gives on each day a ranking based on means calculated from previous n-day's data. The natural way is to use pd.rolling_apply. A toy example:

```
In [93]: df = pd.DataFrame(np.random.randint(10, size=20).reshape(4, 5))

In [94]: df
Out[94]: 
   0  1  2  3  4
0  2  0  0  2  0
1  9  5  5  6  1
2  2  3  6  8  8
3  5  1  2  9  0

In [95]: import bottleneck as bn

In [96]: bn.nanrankdata(df.mean())
Out[96]: array([ 4. ,  1.5,  3. ,  5. ,  1.5])
```

Up to now, it is cool. Then:

```
In [97]: pd.rolling_apply(df, 2, lambda x: bn.nanrankdata(bn.nanmean(x, axis=0)))
Out[97]: 
    0   1   2   3   4
0 NaN NaN NaN NaN NaN
1   1   1   1   1   1
2   1   1   1   1   1
3   1   1   1   1   1
```

This is clearly wrong. Is this a bug?
