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.

6voto

garbanzio Points 796

Si m est le numéro du mois...

import math
math.ceil(float(m) / 3)

0 votes

Si vous avez le mois à portée de main, ce qui est facile, c'est génial.

5voto

Siddaram H Points 412

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

5voto

Roei Bahumi Points 361

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

4voto

Uri Goren Points 445

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

1voto

Deepa Points 11

J'ai essayé la solution avec x//3+1 et x//4+1, Nous obtenons un quart incorrect dans les deux cas. La réponse correcte est la suivante

pour i dans la plage(1,13):
  imprimer(((i-1)//3)+1)

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