2016-05-03 12 views
1

Ich möchte Tage herausfiltern, die weniger als 200 Minuten Beobachtungen enthalten. Meine Daten sieht wie folgt aus:Pandas, Python. Wie kann man Tage in Abhängigkeit von der Anzahl der Beobachtungen herausfiltern?

Time         
    2009-01-30 09:30:00 85.1100 100.1100 
    2009-01-30 09:39:00 84.9300 100.0500 
    2009-01-30 09:40:00 84.9000 100.0000 
    2009-01-30 09:45:00 84.9100 99.9400 
    2009-01-30 09:48:00 84.8100 99.9000 
    2009-01-30 09:55:00 84.7800 100.0000 
          ...  ... 
    2016-02-29 15:58:00 193.7200 24.8300 
    2016-02-29 15:59:00 193.4800 24.8700 
    2016-02-29 16:00:00 193.6100 24.8300 
    2016-03-01 09:30:00 195.2200 24.3099 
    2016-03-01 09:31:00 195.1000 24.3300 
    2016-03-01 09:32:00 195.1500 24.3100 
    2016-03-01 09:33:00 195.1100 24.3800 

erste Spalte ist ein DateTimeIndex, wie Sie wahrscheinlich bemerkt, ist dies eine Minute Daten und einige Minuten werden aus dem Datensatz fehlt. Ich möchte eine Neuberechnung von Minutendaten und den Umgang mit NA-Werten vermeiden, finde aber eher eine Möglichkeit, Tage basierend auf dem Index herauszufiltern (Tag hat mehr als 200 Minuten Beobachtungen, < 200 Minuten Beobachtungen wird weggelassen)

Antwort

4

dass Time unter der Annahme ist eine Spalte (kein Index), versuchen Sie, wie etwas wie folgt:

df.ix[df.groupby(df['Time'].dt.date)['col1'].transform('count') > 200] 

wo col1 ein Spaltenname

wenn Time Spalte ein Index ist:

df.ix[df.groupby(df.index.date)['col1'].transform('count') > 200] 

UPDATE: von Pandas beginnend 0.20.1 the .ix indexer is deprecated, in favor of the more strict .iloc and .loc indexers.

Verwenden Sie also df.loc[...] statt veraltet df.ix[...]

Verwandte Themen