I have a dataframe of 5 columns indexed by YearMo:
yearmo = np.repeat(np.arange(2000, 2010) * 100, 12) + [x for x in range(1,13)] * 10
rates = pd.DataFrame(data=np.random.random(120, 5)),
index=pd.Series(data=yearmo, name='YearMo'),
columns=['A', 'B','C', 'D', 'E'])
rates.head()
YearMo A B C D E
200411 0.237696 0.341937 0.258713 0.569689 0.470776
200412 0.601713 0.313006 0.221821 0.720162 0.889891
200501 0.024379 0.761315 0.225032 0.293682 0.302431
200502 0.996778 0.388783 0.026448 0.056188 0.744850
200503 0.942024 0.768416 0.484236 0.102904 0.287446
What I would like to do is to be able to apply a rolling window and pass all five columns to a function – something like:
rates.rolling(window=60, min_periods=60).apply(lambda x: my_func(data=x, param=5)
but this approach applies the function to each column. Specifying axis=1
doesn't do anything either....
This will do what you want,
min_periods=5, axis=1
..rolling(...
window is column 'A':'E' or a multiple of 5.Tested with Python:3.4.2 - pandas:0.19.2