web-dev-qa-db-ja.com

Pandas date_rangeは、月の初めに月次データを生成します

日が常に月の初めである月間データの日付範囲を生成しようとしています:

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

これにより、1/31/19802/29/1980、 等々。代わりに、1/1/19802/1/1980、...

毎月特定の日にデータを生成することについて他の質問があり、それは不可能であると答えましたが、月の初めは必ず可能でなければなりません!

43
Bunny_Ross

これを行うには、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)

ドキュメントの offset aliases 部分を調べてください。そこでは、'M'は月末(月の終了頻度)であり、'MS'は月の開始(月の開始頻度)であることが示されています。