我想要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会抱怨。)
答案 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)