Bien sûr, je pourrais écrire cela moi-même, mais avant de réinventer la roue, existe-t-il déjà une fonction qui le fait?
Si vous avez le mois à portée de main, ce qui est facile, c'est génial.
Bien sûr, je pourrais écrire cela moi-même, mais avant de réinventer la roue, existe-t-il déjà une fonction qui le fait?
Pour ceux qui cherchent des données trimestrielles de l'année financière en utilisant pandas,
import datetime
import pandas as pd
today_date = datetime.date.today()
quarter = pd.PeriodIndex(today_date, freq='Q-MAR').strftime('T%q')
référence : indice de période pandas
Voici un exemple d'une fonction qui prend un objet datetime.datetime et renvoie une chaîne unique pour chaque trimestre :
from datetime import datetime, timedelta
def get_quarter(d):
return "T%d_%d" % (math.ceil(d.month/3), d.year)
d = datetime.now()
print(d.strftime("%Y-%m-%d"), get_quarter(d))
d2 = d - timedelta(90)
print(d2.strftime("%Y-%m-%d"), get_quarter(d2))
d3 = d - timedelta(180 + 365)
print(d3.strftime("%Y-%m-%d"), get_quarter(d3))
Et la sortie est :
2019-02-14 T1_2019
2018-11-16 T4_2018
2017-08-18 T3_2017
Cette méthode fonctionne pour n'importe quelle correspondance :
month2quarter = {
1:1,2:1,3:1,
4:2,5:2,6:2,
7:3,8:3,9:3,
10:4,11:4,12:4,
}.get
Nous venons de générer une fonction int->int
month2quarter(9) # retourne 3
Cette méthode est également infaillible
month2quarter(-1) # retourne None
month2quarter('July') # retourne None
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
1 votes
Si les objets datetime sont stockés dans une série ou un dataframe Pandas, il existe une méthode qui renvoie le(s) trimestre(s) respectif(s) :
pandas.Series.dt.quarter
.