0
votes

Extraire le groupe de groupby

J'ai un Pandas DataFrame:

 entrez la description de l'image ici

Je l'ai regroupé en fonction de la colonne de date qui y est présente.

Maintenant, je suis en train de parcourir la date min à max et dans une boucle intérieure, j'essaie d'obtenir le cadre de données pour cette date.

Je fais comme ceci:

grouped_df = df.group_by('date')
for d in range(min_date, max_date + timedelta(days=1)):
     dated_df = grouped_df.get_group(d)

Cela fonctionne bien pour moi, mais uniquement pour les dates présentes dans la plage. Pour les dates comme le 17/09/2020 qui n'est pas présente daté_df = grouped_df.get_group (d) , il s'agit d'une erreur.

Quelqu'un pourrait-il m'aider à obtenir un dataframe vide au lieu de Erreur. Je ne veux pas utiliser try sauf. Merci.


3 commentaires

heureux de vous aider, mais vous devez d'abord fournir un exemple reproductible minimal que 5 lignes de vos données suffiront


Édité. Veuillez vérifier à nouveau. Merci.


veuillez poster votre sortie attendue


3 Réponses :


2
votes

Si vous ne voulez pas faire un essai sauf , vous pouvez vérifier l'existence:

all_dates = set(df['date'])
for d in range(min_date, max_date + timedelta(days=1)):
     dated_df = grouped_df.get_group(d) if d in all_dates else None


0 commentaires

0
votes

Vous pouvez également simplement parcourir les groupes pour ne pas avoir à vous soucier des dates manquantes.

grouped_df = df.group_by('date')

for date, group in grouped_df:
    if date in range(min_date, max_date + timedelta(days=1)):
        dated_df = group

Cela suppose que les dates minimale et maximale ne sont pas sur toute la plage de df ['date'] . Si l'intention est de parcourir toutes les dates du df , vous n'avez pas besoin de l'instruction if.


0 commentaires

0
votes

itérer uniquement sur les groupes que groupby a créé

for d in grouped_df.groups.keys():
    dated_df = grouped_df.get_group(d)

Cependant, groups.keys () ne préserve pas nécessairement l'ordre.


0 commentaires