J'ai un Pandas DataFrame:
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 Réponses :
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
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.
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.
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