1

たとえば、インデックスが文字列、年-月である DataFrame を処理します。

index = ['2007-01', '2007-03', ...]

ただし、インデックスはいっぱいではありません。たとえば2007-02、欠落しています。私が望むのは、DataFrame を完全なインデックスで再インデックス化することです。

私が試したこと:

In [60]: pd.DatetimeIndex(start='2007-01', end='2007-12', freq='M')
Out[60]: 
DatetimeIndex(['2007-01-31', '2007-02-28', '2007-03-31', '2007-04-30',
           '2007-05-31', '2007-06-30', '2007-07-31', '2007-08-31',
           '2007-09-30', '2007-10-31', '2007-11-30'],
          dtype='datetime64[ns]', freq='M')

インデックスは毎月末日です。

In [64]: pd.DatetimeIndex(['2007-01', '2007-03', '2007-04', '2007-05'])
Out[64]: DatetimeIndex(['2007-01-01', '2007-03-01', '2007-04-01', '2007-05-01'],    dtype='datetime64[ns]', freq=None)

インデックスは毎月の始まりです。

この問題を処理するにはどうすればよいですか?

4

1 に答える 1

2

freq='MS'月の最初の日の頻度が必要な場合は、パラメーターを追加する必要があると思います:

print (pd.DatetimeIndex(start='2007-01', end='2007-12', freq='MS'))
DatetimeIndex(['2007-01-01', '2007-02-01', '2007-03-01', '2007-04-01',
               '2007-05-01', '2007-06-01', '2007-07-01', '2007-08-01',
               '2007-09-01', '2007-10-01', '2007-11-01', '2007-12-01'],
              dtype='datetime64[ns]', freq='MS')

pandas documentation の Offset Aliasesへのリンク、EdChumに感謝します。

別の解決策はPeriodIndex、月の期間を生成するために使用されます。

print (pd.PeriodIndex(start='2007-01', end='2007-12', freq='M'))
PeriodIndex(['2007-01', '2007-02', '2007-03', '2007-04', '2007-05', '2007-06',
             '2007-07', '2007-08', '2007-09', '2007-10', '2007-11', '2007-12'],
            dtype='int64', freq='M')
于 2016-09-27T09:12:49.617 に答える