我试图写一个函数,根据滚动窗口上的特定索引求和/平均。在
我的数据如下:
Date (L0) Date - (L1) Value 4-Period-L0-Sum
12/31/2011 1/25/2012 1321
3/31/2012 4/25/2012 1457
6/30/2012 7/25/2012 2056
9/30/2012 10/26/2012 3461 8295
12/31/2012 1/24/2013 2317 9291
3/31/2013 4/24/2013 2008 9842
6/30/2013 7/24/2013 1885 9671
6/30/2013 7/27/2013 1600 9386
9/30/2013 10/29/2013 1955 7880
9/30/2013 11/1/2013 1400 7325
12/31/2013 1/28/2014 1985 6993
12/31/2013 1/30/2014 1985 6993
3/31/2014 4/24/2014 1382 6367
3/31/2014 4/25/2014 1200 6185
6/30/2014 7/23/2014 2378 6963
9/30/2014 10/21/2014 3826 9389
3/31/2015 4/28/2015 2369 9773
3/31/2015 4/30/2015 2369 9773
我正在尝试生成pd滚动总和(dataframe,window=4),但根据level=0索引(Date(L0))并使用先前level=0索引项中的最后一个值。例如,要计算期间的滚动和
^{pr2}$我的解决方案是使用一个扩展窗口groupby level 0,然后取尾和:
def custom_sum(datadf, period):
idx_range = np.arange(n)
mm = period * 2 + 4
tmpdf = pd.concat(
map(lambda i:
pd.DataFrame( datadf.iloc[ :i], ].
groupby(level=0,axis=0).tail(1).tail(period).
sum(skipna=False)
).T
, idx_range[period:] ))
tmpdf.index = datadf.index[period-1:]
return tmpdf
虽然它跑得很慢。我相信一定有更好的办法。在
一种方法可能是使用pd.加重适用(),但它没有保留要对其应用函数的dataframe,因此无法获得正确的GroupBy索引。。在
谢谢!在
可以按如下方式使用groupby:
输出如下:
^{pr2}$相关问题 更多 >
编程相关推荐