繁体   English   中英

在DataFrame的多个列上的Pandas.rolling_apply lambda

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM