我是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
看起来像最后一行
return mzbins
缩进得太多,应该在while
循环之外,即
return mzbins