python – 使用不同长度的pandas数据帧计算滚动窗口的加权和
发布时间:2020-12-20 11:59:05 所属栏目:Python 来源:网络整理
导读:我有一个大型数据框我正在执行滚动计算的5000000行. df = pd.DataFrame(np.randn(10000,1),columns = ['rand'])sum_abs = df.rolling(5).sum() 我想做同样的计算,但加上一个加权和. df2 = pd.DataFrame(pd.Series([1,2,3,4,5]),name ='weight'))df3 = df.mul
我有一个大型数据框>我正在执行滚动计算的5000000行.
df = pd.DataFrame(np.randn(10000,1),columns = ['rand']) sum_abs = df.rolling(5).sum() 我想做同样的计算,但加上一个加权和. df2 = pd.DataFrame(pd.Series([1,2,3,4,5]),name ='weight')) df3 = df.mul(df2.set_index(df.index)).rolling(5).sum() 但是,我得到一个长度不匹配的预期轴有5个元素错误. 解决方法
简单的方法是这样做
w = np.arange(1,6) df.rolling(5).apply(lambda x: (x * w).sum()) 使用步幅不太容易的方法 from numpy.lib.stride_tricks import as_strided as strided v = df.values n,m = v.shape s1,s2 = v.strides k = 5 w = np.arange(1,6).reshape(1,1,k) pd.DataFrame( (strided(v,(n - k + 1,m,k),(s1,s2,s1)) * w).sum(-1),df.index[k - 1:],df.columns) 天真的时间测试 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |