2016-07-19 19 views
3

Was ich versuche, ist ein mehrere bedingte Durchschnitt. Es bedeutet, dass ich eine Liste von x Variablen (von gleicher Länge) habe und ich möchte den Durchschnitt einer Variablen berechnen, die auf den Wert/Bereich der anderen konditioniert ist.Mehrere bedingte durchschnittliche Python

Die Datei ist: It is a sample file

Der Code habe ich versucht, ist:

wb=pd.ExcelFile('file.xlsx') 
wb.sheet_names 
df=wb.parse('Sheet1') 
df[:] 
Var1=df['Col1_Name'] 
Var2=df['Col2_Name'] 
Var3=df['Col3_Name'] 
Var4=df['Col4_Name'] 
Var5=df['Col5_Name'] 
Var6=df['Col6_Name'] 

if (Var1 == 0).any() and (Var2 == 0).any() and (Var3 < 0.8).any() and (Var6 == 0).any(): 
    print sum(Var4)/len(Var4) 

Es scheint in Ordnung zu sein, aber, wenn ich die Bedingungen ändern, das Ergebnis ist immer das gleiche. Außerdem habe ich versucht das selbe auf Excel zu berechnen als Doppelcheck und das Ergebnis ist in der Tat anders. Kannst du mir helfen? Danke :)

+1

Es hat wahrscheinlich nichts gedruckt, weil die Bedingung nicht erfüllt wurde. Überprüfen Sie den Zustand. –

+2

Ein Beispiel Ihrer Eingabedatei könnte – Frodon

+1

helfen, das ist nicht die Art, wie '.all()' basierend auf der Dokumentation verwendet wird. Lesen Sie mehr ... Schauen Sie sich das an: http://stackoverflow.com/questions/27791651/pandas-boolean-any-all –

Antwort

3

Was Sie geschrieben haben, scheint allerlei falsch. Ich glaube, was Sie wollen, ist:

(Var1 == 0).all() and (Var2 == 0) and (Var3 >= 0).all() and (Var3 < 1).all() and (Var6 == 0).all() 
Verwandte Themen