134 votes

Y a-t-il une fonction pour déterminer dans quel trimestre de l'année se trouve une date?

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?

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.

0voto

Federico Baù Points 2040

Une solution revisité utilisant @Alex Martelli formule et en créant une fonction rapide comme le demande la question.

from datetime import timedelta, date

date_from = date(2021, 1, 1)
date_to = date(2021, 12, 31)

get_quarter = lambda dt: (dt.month-1)//3 + 1

quarter_from = get_quarter(date_from) 
quarter_to = get_quarter(date_to) 
print(quarter_from)
print(quarter_to)
# 1
# 4

0voto

Anurag Uniyal Points 31931

Hmmm donc les calculs peuvent mal se passer, voici une meilleure version (juste pour le plaisir)

premier, deuxième, troisième, quatrième=1,2,3,4# vous pouvez faire des chaînes si vous le souhaitez :)

quarterMap = {}
quarterMap.update(dict(zip((1,2,3),(premier,)*3)))
quarterMap.update(dict(zip((4,5,6),(deuxième,)*3)))
quarterMap.update(dict(zip((7,8,9),(troisième,)*3)))
quarterMap.update(dict(zip((10,11,12),(quatrième,)*3)))

print quarterMap[6]

0 votes

@RussBradberry dans ce cas peut-être que vous avez raison, mais parfois la lisibilité et le fait d'être explicite comptent et mènent à moins d'erreurs, au lieu d'un calcul succinct

1 votes

@RussBradberry consultez également les réponses et commentaires supprimés à ce sujet, voir qu'un simple calcul peut poser problème même pour les bons programmeurs et il est difficile de voir la justesse sans le tester, dans ma solution vous pouvez voir et être certain que ça fonctionnera

1 votes

Tout comme vous l'avez dit "il est difficile de voir la justesse sauf en la testant". Vous devriez écrire des tests, comme le font tous les bons développeurs. Les tests sont ce qui vous aide à éviter de faire des erreurs et à attraper celles que vous faites. Un développeur ne devrait jamais sacrifier la performance et la lisibilité pour éviter de commettre une erreur. De plus, c'est moins lisible que si vous aviez simplement créé un dict statique à l'aide de littéraux.

Prograide.com

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.

Powered by:

X