2016-10-11 83 views
0

我的数据帧(df)的号码清单(总计1773),我试图找到一个中间的五个号码(例如,median of 3rd number = median (1st,2nd,3rd,4th,5th)平均五点蟒蛇

num 
10 
20 
15 
34 
... 
... 
... 

def median(a, b, c,d,e): 
    I=[a,b,c,d,e] 
    return I[2] 



num_median = [num[0]] 

for i in range(1, len(num)): 
    num_median = median(num[i - 1], num[i-2], num[i],num[i+1],num[i+2]) 

df['num_median']=num_median 


IndexError: index 1773 is out of bounds for axis 0 with size 1773 

它去哪儿了是否有其他方法来计算中位数?

回答

1

一个例子,这将有助于:

a = [0, 1, 2, 3] 
print('Length={}'.format(len(a))) 
print(a(4)) 

您正在尝试同样的事情。元素的实际索引比它所在的位置低。请记住,你的例外显示你刚好你的问题在哪里。

您需要修改:

for i in range(1, len(num) - 2): 
    num_median = median(num[i - 1], num[i-2], num[i],num[i+1],num[i+2]) 

所以你在过去的索引检查将不会太大。否则,当你在数组的最后(index = 1773)时,你将尝试访问一个不存在的索引(1773 + 2)。