Trouver la fin du mois Pandas DataFrame de la Série
J'ai une série à l'intérieur d'un DataFrame que j'ai lu dans d'abord comme un objet, et puis avoir besoin de convertir une date au format aaaa-mm-jj où dd est à la fin du mois.
Comme un exemple, j'ai DataFrame df avec une colonne Date, objet:
... Date ...
... 200104 ...
... 200508 ...
Ce que je veux, quand cela est dit et fait est un objet date:
... Date ...
... 2001-04-30 ...
... 2005-08-31 ...
tel que df['Date'].item() retourne
datetime.date(2001, 04, 30)
J'ai utilisé le code suivant pour obtenir presque là, mais toutes mes dates sont au début du mois, pas la fin. Veuillez informer.
df['Date'] = pd.to_datetime(df['Date'], format="%Y%m").dt.date
Note: j'ai déjà importé des Pandas ad pd, et datetime en tant que dt
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
pandas.tseries.offsets.MonthEnd
:La
1
dansMonthEnd
juste spécifie pour avancer d'un pas en avant pour la prochaine date c'est une fin de mois. (À l'aide de0
, ou en le laissant vide également de travailler dans votre cas). Si vous voulez que le dernier jour du mois suivant, vous pouvez utiliserMonthEnd(2)
, etc. Cela devrait fonctionner pour tout le mois, de sorte que vous n'avez pas besoin de connaître le nombre de jours dans le mois, ou quelque chose comme ça. Plus de décalage d'informations peuvent être trouvées dans le la documentation.Exemple d'utilisation et de sortie:
MonthEnd
est l'un des joyaux cachés dans les Pandas que tu ne pense pas immédiatement Pandas aurait. Habituellement, mon premier réflexe est d'utiliser d'autres datetime bibliothèques..jusqu'à ce que je me souviens de Pandas a cool!Convenu que la racine est la bonne méthode. Toutefois, les lecteurs qui ont aveuglément utilisation
MonthEnd(1)
êtes dedans pour une surprise s'ils utilisent la dernière date du mois en entrée:À l'aide de
MonthEnd(0)
au lieu de cela donne ceci:utilisation
dateutil.relativedelta
. Ensuite, ajoutez un delta par rapport à la première du mois.vous obtient: