[英]Pandas.rolling_apply lambda on multiple columns of DataFrame
我想做一个涉及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
两个列合并到rolling_apply
。 是否可能出现以下情况?
pd.rolling_apply(df, 12, lambda x: x['Col1']@a.values+x['Col2']@a.values, min_periods=12)
(如果我尝试以这种方式在lambda中引入列引用,Python会抱怨。)
请注意,不建议使用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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.