Betrachten Sie den Datenrahmen df
df = pd.DataFrame(dict(A=range(100)), pd.date_range('2010-03-31', periods=100))
Beachten Sie, dass Sie von Anfang an von einem Monat zum Anfang des nächsten zu schneiden fragen. Typisches Python-Slicing enthält nicht den Endpunkt (obwohl loc
tut). Ich nehme an, Sie wollten es ausschließen, da dies die Antwort bequem macht.
Verwendung resample
mit einer Frequenz 'M'
df.resample('M').sum()
A
2010-03-31 0
2010-04-30 465
2010-05-31 1426
2010-06-30 2295
2010-07-31 764
Sie durch jeden Monat laufen kann
for m, grp in df.groupby(pd.TimeGrouper('M')):
# do stuff
print(m)
2010-03-31 00:00:00
2010-04-30 00:00:00
2010-05-31 00:00:00
2010-06-30 00:00:00
2010-07-31 00:00:00