当我在python中放入函数时,我的代码不起作用

问题描述 投票:0回答:1

我是python的新手,我有一个执行滑动窗口合并的代码,当我在函数外部使用它时,它可以工作,但是当我将其放在函数中时,它仅填充第一行,然后停止工作。我希望你能帮助我。

def slidefunc (data,window,step):
    minmz = data['mass'].min()
    maxmz = data['mass'].max()
    bins = []
    minbin = minmz+window
    maxbin = maxmz-window
    for i in np.arange(minbin,maxbin,step):
        bins.append(i)
    m = len(bins)-1
    i = 0
    j = 0
    first = 0
    n = 0
    accum = 0
    mzbins = pd.DataFrame(bins, columns= ['bins'])
    mzbins['intensity'] = np.nan
    mzbins['samples'] = np.nan

    while (j<=m):
        lower = bins[j]- window
        upper = bins[j]+ window
        while data.iat[i,0]<= lower:
            i = i + 1
        first = i
        while data.iat[i,0]< upper:            
            accum = accum + data.iat[i,1]
            n = n + 1
            i = i + 1
        if (n>0):
            mzbins.iat[j,1] = accum/n
            mzbins.iat[j,2] = n
            #a = accum/n
            #b = n
            accum = 0 
            n = 0
        j = j + 1
        i = first
            # Jump empty regions
        #empty =   mzbins.iat[j,0]+window
        #while j<m and data.iat[i,0] > empty :
         #   j = j + 1

        return mzbins
python function loops
1个回答
0
投票

看起来像最后一行

        return mzbins

缩进得太多,应该在while循环之外,即

    return mzbins
© www.soinside.com 2019 - 2024. All rights reserved.