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