Wie gruppiere ich DataFrame nach einem bestimmten Zeitraum?

Ich habe einige Daten aus Protokolldateien und möchte Einträge nach Minuten gruppieren:

 def gen(date, count=10):
     while count > 0:
         yield date, "event{}".format(randint(1,9)), "source{}".format(randint(1,3))
         count -= 1
         date += DateOffset(seconds=randint(40))

 df = DataFrame.from_records(list(gen(datetime(2012,1,1,12, 30))), index='Time', columns=['Time', 'Event', 'Source'])

df:

 Event  Source
 2012-01-01 12:30:00     event3  source1
 2012-01-01 12:30:12     event2  source2
 2012-01-01 12:30:12     event2  source2
 2012-01-01 12:30:29     event6  source1
 2012-01-01 12:30:38     event1  source1
 2012-01-01 12:31:05     event4  source2
 2012-01-01 12:31:38     event4  source1
 2012-01-01 12:31:44     event5  source1
 2012-01-01 12:31:48     event5  source2
 2012-01-01 12:32:23     event6  source1

Ich habe diese Optionen ausprobiert:

df.resample('Min') ist zu hoch und will aggregieren.df.groupby(date_range(datetime(2012,1,1,12, 30), freq='Min', periods=4)) schlägt mit Ausnahme fehl.

df.groupby(TimeGrouper(freq='Min')) funktioniert gut und gibt a zurückDataFrameGroupBy Objekt zur Weiterverarbeitung, z.

grouped = df.groupby(TimeGrouper(freq='Min'))
grouped.Source.value_counts()
2012-01-01 12:30:00  source1    1
2012-01-01 12:31:00  source2    2
                     source1    2
2012-01-01 12:32:00  source2    2
                     source1    2
2012-01-01 12:33:00  source1    1

jedoch, dasTimeGrouper Klasse ist nicht dokumentiert.

Was ist der richtige Weg, um nach einem bestimmten Zeitraum zu gruppieren? Wie kann ich die Daten nach Minuten UND nach der Spalte Quelle gruppieren, z.groupby([TimeGrouper(freq='Min'), df.Source])?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage