Python 如何加快熊猫中的row操作?目前发布代码需要13个小时
我有100000行和500多列。我想计算前5行的加权平均值,并对每一行使用该数据。例如,我有10行 行1:5-无处理 第6行=第5*1行+第4*0.8行+第3*0.6行+第2*0.4行+第1*0.2行 使用Pandas我已经解决了这个问题,但是在整个数据集上完成这个操作需要13-14个小时。我阅读了有关.apply函数的内容,但我不确定在访问前几行中的信息时如何使用它Python 如何加快熊猫中的row操作?目前发布代码需要13个小时,python,pandas,dataframe,Python,Pandas,Dataframe,我有100000行和500多列。我想计算前5行的加权平均值,并对每一行使用该数据。例如,我有10行 行1:5-无处理 第6行=第5*1行+第4*0.8行+第3*0.6行+第2*0.4行+第1*0.2行 使用Pandas我已经解决了这个问题,但是在整个数据集上完成这个操作需要13-14个小时。我阅读了有关.apply函数的内容,但我不确定在访问前几行中的信息时如何使用它 范围内的i(lengthAllData):#长度=总行数 如果i>=5: alldata.iloc[i,1:width]=(al
范围内的i(lengthAllData):#长度=总行数
如果i>=5:
alldata.iloc[i,1:width]=(alldata.iloc[i-1,1:width]*1+
alldata.iloc[i-2,1:宽度]*0.8+alldata.iloc[i-3,1:宽度]*0.6+
alldata.iloc[i-4,1:width]*0.4+alldata.iloc[i-5,1:width]*0.2)/
wtavg
其他:
通过
我想在几分钟内执行这段代码。如何操作?使用toiterrows()
函数迭代行。此外,不要每次都查找项目,而是将它们存储在列表中,并根据需要删除
你的代码看起来像这样-
i = 0
tmp = []
for _,k in alldata.iterrows():
if i <5:
tmp.append(k) #Appending k will append the individual row as a series
else:
tmp.append(Weighted average of last 5 elements of tmp)
i=0
tmp=[]
对于alldata.iterrows()中的k:
如果我使用toiterrows()
函数迭代行。此外,不要每次都查找项目,而是将它们存储在列表中,并根据需要删除
你的代码看起来像这样-
i = 0
tmp = []
for _,k in alldata.iterrows():
if i <5:
tmp.append(k) #Appending k will append the individual row as a series
else:
tmp.append(Weighted average of last 5 elements of tmp)
i=0
tmp=[]
对于alldata.iterrows()中的k:
一般来说,如果i,应该避免对数据帧应用循环,尤其是对它们的行。尝试向下移动数据帧:
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
通常,应该避免将循环应用于数据帧,尤其是数据帧的行。尝试向下移动数据帧:
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
谢谢你,老兄!这真的很有帮助!谢谢你,老兄!这真的很有帮助!在(tmp.append)(tmp最后5个元素的加权平均数)中,我如何访问前几行,因为“\ux”将只提供当前行的索引。@Neel“k”具有您需要的详细信息。如果列名为nums,则k.nums将是当前行的值。(tmp.append(tmp最后5个元素的加权平均数)如何访问前几行,因为“\ux”只提供当前行的索引。@Neel“k”提供了所需的详细信息。如果列名为nums,则k.nums将是当前行的值。