五分的中位数 python

median of five points python

我的数据框 (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

哪里出错了,还有其他计算中位数的方法吗?

一个有用的例子:

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)。