2016-10-11 7 views
0

Meiner Datenrahmen (df) eine Liste von Zahlen (gesamt 1773) und ich versuche, einen Medianwert für fünf Zahlen zu finden (zB median of 3rd number = median (1st,2nd,3rd,4th,5th))Median von fünf Punkten Python

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 

Wo es ging falsch und gibt es eine andere Methode, um den Median zu berechnen?

Antwort

1

Ein Beispiel, das helfen:

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

Du das Gleiche versuchen. Der tatsächliche Index eines Elements ist um eins niedriger als der Ort, an dem es steht. Denken Sie daran, Ihre Ausnahme zeigt Ihnen genau wo Ihr Problem ist.

Sie müssen ändern:

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

Damit Ihre letzte Indexprüfung nicht zu groß sein wird. Andernfalls werden Sie, wenn Sie sich am Ende Ihres Arrays befinden (Index = 1773), versuchen, auf einen Index zuzugreifen, der nicht existiert (1773 + 2).

Verwandte Themen