1. ホーム
  2. python

[解決済み] 月初に月次データを生成するPandasのdate_range

2023-04-15 07:43:49

質問

月次データの日付範囲を生成しようとしていますが、日が常に月初になります。

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

これは 1/31/1980 , 2/29/1980 といった具合です。その代わり、私はただ 1/1/1980 , 2/1/1980 ,...

他の質問で、月の特定の日に必ずあるデータの生成について質問して、不可能という回答があったのを見たことがありますが、月初は確かに可能なはずです!?

どのように解決するのですか?

を変更することで、これを行うことができます。 freq の引数を 'M' から 'MS' :

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

これで印刷されるはずです。

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)

を調べます。 オフセットエイリアス という部分があります。そこには、以下のように書かれています。 'M' は月末用 (月末の頻度) であるのに対して 'MS' は月初め(月初頻度)用です。