Comment scinder une pandas dataframe ou d'une série par jour (éventuellement à l'aide d'un itérateur)

J'ai une longue série de temps, par exemple.

import pandas as pd
index=pd.date_range(start='2012-11-05', end='2012-11-10', freq='1S').tz_localize('Europe/Berlin')
df=pd.DataFrame(range(len(index)), index=index, columns=['Number'])

Maintenant, je veux extraire tous les sous-DataFrames pour chaque jour, pour obtenir la sortie suivante:

df_2012-11-05: data frame with all data referring to day 2012-11-05
df_2012-11-06: etc.
df_2012-11-07
df_2012-11-08
df_2012-11-09
df_2012-11-10

Quel est le moyen le plus efficace pour ce faire, en évitant de vérifier si l'index.date==give_date, qui est très lente. Aussi, l'utilisateur ne connaît pas un prieuré de la plage de jours dans le cadre.

Tout soupçon faire cela avec un itérateur?

Ma solution actuelle est, mais il n'est pas aussi élégante et dispose de deux questions définies ci-dessous:

time_zone='Europe/Berlin'
# find all days
a=np.unique(df.index.date) # this can take a lot of time
a.sort()
results=[]
for i in range(len(a)-1):
    day_now=pd.Timestamp(a[i]).tz_localize(time_zone)
    day_next=pd.Timestamp(a[i+1]).tz_localize(time_zone)
    results.append(df[day_now:day_next]) # how to select if I do not want day_next included?

# last day
results.append(df[day_next:])

Cette approche présente les problèmes suivants:

  • a=np.unique(df.index.date) peut prendre beaucoup de temps
  • df[day_now:day_next] comprend day_next, mais j'ai besoin de l'exclure dans la gamme
InformationsquelleAutor Mannaggia | 2014-02-06