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

2024-06-02 17:27:51 发布

您现在位置: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

Tags: 函数datastepnpwindowmassemptyfirst