Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何加快熊猫中的row操作?目前发布代码需要13个小时_Python_Pandas_Dataframe - Fatal编程技术网

Python 如何加快熊猫中的row操作?目前发布代码需要13个小时

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

我有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]=(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
其他:
通过
我想在几分钟内执行这段代码。如何操作?

使用to
iterrows()
函数迭代行。此外,不要每次都查找项目,而是将它们存储在列表中,并根据需要删除

你的代码看起来像这样-

  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:
如果我使用to
iterrows()
函数迭代行。此外,不要每次都查找项目,而是将它们存储在列表中,并根据需要删除

你的代码看起来像这样-

  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将是当前行的值。