2016-06-10 3 views
1

Ich habe einen Datenrahmen wie folgt.Pandas: Wie Zeilen extrahiert werden, die gerade innerhalb einer Zeitdauer sind?

     value estimated \ 
dttm_timezone                
2011-12-31 20:10:00 10.7891   0 
2011-12-31 20:15:00 11.2060   0 
2011-12-31 20:20:00 19.9975   0 
2011-12-31 20:25:00 15.9975   0 
2011-12-31 20:30:00 10.9975   0 
2011-12-31 20:35:00 13.9975   0 
2011-12-31 20:40:00 15.9975   0 
2011-12-31 20:45:00 11.7891   0 
2011-12-31 20:50:00 10.9975   0 
2011-12-31 20:55:00 10.3933   0 

Durch die Informationen dttm_timezone Spalte, würde Ich mag alle Zeilen extrahieren, die nur innerhalb eines Tag oder eine Woche oder einem Monat.

Ich habe Daten von 1 Jahr, also wenn ich Tag wie die Dauer wähle ich separat 365 Tage Daten extrahieren soll, wenn ich Monat wählen dann sollte ich separat ein 12 Monate Daten extrahieren.

Wie kann ich das erreichen?

+0

/@ Haggar Was haben Sie versucht? – Merlin

+0

Können Sie das konkretisieren „extrahieren Sie alle Zeilen, die nur innerhalb eines Tages sind“ Haben Sie meinen Sie möchten einen Tag specificy und alle Zeilen raus, die an jenem Tag,? Oder meinst du, du willst die Daten neu indizieren, so dass ihre Häufigkeit Täglich ist? Im letzteren Fall, wie möchten Sie die Werte aggregieren? Nimm das Maximum? Der Mittelwert? et cetera –

+0

@MerIin: Ich weiß, dass die Proben alle 5 Minuten gesammelt werden, so habe ich berechnet, wie viele Zeilen es dauert einen Tag und einen Monat. Ich bin besorgt, dass, wenn sich die Sampling-Zeit ändert, es nicht funktioniert, also war ich nur neugierig zu wissen, ob es einen Weg gibt, es mit Pandas-Funktionen zu machen. Ich dachte über Resample nach. – HaggarTheHorrible

Antwort

3

des verwenden Lassen

import pandas as pd 
import numpy as np 

tidx = pd.date_range('2010-01-01', '2014-12-31', freq='H', name='dtime') 

np.random.seed([3,1415]) 
df = pd.DataFrame(np.random.rand(len(tidx)), tidx, ['value']) 

Sie auf '2010' wie folgt begrenzen:

df['2010'] 

Oder

df[df.index.year == 2010] 

Sie zu einem bestimmten Monat begrenzen durch:

df['2010-04'] 

oder alle Aprils:

df[df.index.month == 4] 

Sie an einem bestimmten Tag begrenzen:

df['2010-04-28'] 

alle 01.00 suchen:

df[df.index.hour == 13] 

Datumsbereich:

df['2011':'2013'] 

oder

df['2011-01-01':'2013-06-30'] 

Es Tonne Möglichkeiten, um dies zu tun:

df.loc[(df.index.month == 11) & (df.index.hour == 22)] 

Link --->The list can go on and on. Please read the docs < --- Link

+0

@jezrael schneller diesmal. Du bist der Schnelle. – piRSquared

Verwandte Themen