web-dev-qa-db-fra.com

Pandas date_range pour générer des données mensuelles au début du mois

J'essaie de générer une plage de dates de données mensuelles où le jour est toujours au début du mois:

pd.date_range(start='1/1/1980', end='11/1/1991', freq='M')

Cela génère 1/31/1980, 2/29/1980, etc. Au lieu de cela, je veux juste 1/1/1980, 2/1/1980, ...

J'ai vu une autre question poser sur la génération de données qui est toujours sur un jour spécifique du mois, avec des réponses disant que ce n'était pas possible, mais le début du mois doit sûrement être possible!

43
Bunny_Ross

Vous pouvez le faire en changeant l'argument freq de 'M' à 'MS':

d = pandas.date_range(start='1/1/1980', end='11/1/1990', freq='MS')    
print(d)

Cela devrait maintenant imprimer:

DatetimeIndex(['1980-01-01', '1980-02-01', '1980-03-01', '1980-04-01',
               '1980-05-01', '1980-06-01', '1980-07-01', '1980-08-01',
               '1980-09-01', '1980-10-01', 
               ...
               '1990-02-01', '1990-03-01', '1990-04-01', '1990-05-01',
               '1990-06-01', '1990-07-01', '1990-08-01', '1990-09-01',
               '1990-10-01', '1990-11-01'],
              dtype='datetime64[ns]', length=131, freq='MS', tz=None)

Regardez dans la partie alias de décalage de la documentation. Là, il est indiqué que 'M' est pour la fin du mois (fréquence de fin de mois) alors que 'MS' pour le début (fréquence de début du mois).

78