我的数据框(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
哪里出错了,还有其他方法来计算中位数吗?
答案 0 :(得分: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)。