在多个DataFrame列上的Pandas.rolling_apply lambda

时间:2017-12-13 19:48:52

标签: python pandas dataframe lambda

我想要pandas.rolling_apply涉及DataFrame的多个列。

我可以使用DataFrame“df”的一列完成此操作:

a = pd.Series(np.random.randn(12))
pd.rolling_apply(df['Col1'], 12, lambda x: x@a.values, min_periods=12)

但我真的想将两个数据框的列合并到rolling_apply中。有类似以下内容吗?

pd.rolling_apply(df, 12, lambda x: x['Col1']@a.values+x['Col2']@a.values, min_periods=12)

(如果我尝试以这种方式在lambda中引入列引用,Python会抱怨。)

1 个答案:

答案 0 :(得分:0)

请注意,pandas.rolling_apply已弃用。

在这种情况下,由于您可以将所需的lambda分解为单独的调用,因此您可以执行以下操作:

window = df.rolling(12, min_periods=12)
window['Col1'].apply(lambda x: x@a.values) + window['Col2'].apply(lambda x: x@a.values)