2016-05-26 15 views
2

Ich habe einen Datenrahmen von Zeitreihendaten mit numerischen Daten in Spalten. Beim Plotten dieser Daten möchte ich nur bestimmte Serien darstellen, die als nicht ausreichend angesehen werden. Hier ist, wie ich wähle, welche Spalten zu zeichnen:Pandas: Herausfiltern von Spalten basierend auf Gesamtsumme und Durchschnitt

df.loc[:, (df.iloc[-1] >= 100) & (df.sum() >= 1000)] 

Mit anderen Worten, die Kriterien für die „signifikant“ ist, dass die Gesamtsumme der Werte in einer Serie in mehr als 1000 und dem jüngsten Wert mindestens 100

Dies erwies sich jedoch als nicht ausreichend. Was ich stattdessen brauche ist, dass die Summe über 1000 ist (wie vorher), aber ich möchte, dass der Durchschnitt der letzten zwei Zeilen (die letzten beiden) über 100 liegt.

Wie ändere ich den obigen Filter? den Durchschnitt berechnen?

In:

date   A B C D 
2016-04-01 80 235 99 0 
2016-04-02 85 295 153 14 
2016-04-03 111 363 224 14 
2016-04-04 111 379 296 50 
2016-04-05 11 51 29 5 

Out:

date   B C 
2016-04-01 235 99 
2016-04-02 295 153 
2016-04-03 363 224 
2016-04-04 379 296 
2016-04-05 51 29 

Antwort

3

Sie müssen nur die Scheibe ändern (df.iloc[-2:]) und rufen .mean():

df.loc[:, (df.sum() >= 1000) & (df.iloc[-2:].mean() >= 100)] 

(Es scheint ein Fehler zu sein In Ihrem Beispiel sind Eingabe und Ausgabe für die letzte Zeile unterschiedlich.)

Verwandte Themen