我有100,000行,大约500列以上。我想计算前5行的加权平均值,并将该数据用于每一行。例如,我有10行
第1行:5-未处理
第6行=第5行* 1 +第4行* 0.8 +第3行* 0.6 +第2行* 0.4 +第1行* 0.2
使用熊猫我已经解决了这个问题,但是整个数据集需要13-14个小时才能完成此操作。我阅读了有关.apply函数的信息,但是当您访问前几行中的信息时,我不确定如何使用它。
for i in range(lengthAllData): #Length = Total rows
if i>=5:
alldata.iloc[i,1:width] = (alldata.iloc[i-1,1:width]*1 +
alldata.iloc[i-2,1:width]*0.8 + alldata.iloc[i-3,1:width]*0.6 +
alldata.iloc[i-4,1:width]*0.4 + alldata.iloc[i-5,1:width]*0.2) /
wtavg
else:
pass
我想在几分钟内执行此代码。我该怎么做?
最佳答案
通常,应避免将循环应用于数据框,尤其是应用于其行。尝试将数据框下移:
newdata = df.shift(1) * 1 + df.shift(2) * 0.8 + df.shift(3) * 0.6\
+ df.shift(4) * 0.4 + df.shift(5) * 0.2