Я пытаюсь группировать pd.DataFrame
по месяцам и применить пользовательскую функцию ultimo(x)
:df.first_valid_index() возвращает индекс, который вызывает KeyError?
def ultimo(x):
if x.first_valid_index() is None:
return np.nan
else:
return x[x.first_valid_index()]
Я получил это от другого question of mine. Однако сегодня я столкнулся с KeyError
, применяя его - он утверждает, что возвращаемый индекс не находится внутри индекса?
я напечатал, что х и x.first_valid_index() возвращает так:
x.index: <class 'pandas.tseries.index.DatetimeIndex'>
x.index.values: ['2015-03-30T02:00:00.000000000+0200' '2015-03-31T02:00:00.000000000+0200'] <class 'numpy.ndarray'> of type <class 'numpy.datetime64'>
x.first_valid_index(): 2015-03-30 00:00:00 <class 'pandas.tslib.Timestamp'>
Я конвертированы мой индекс даты в DateTime, используя pd.to_datetime
перед запуском navs = navs.groupby(navs.index.to_period('M')).apply(ultimo)
:
navs['Date'] = pd.to_datetime(navs['Date'])
navs = navs.set_index('Date')
Как это исправить? Кажется ироничным, что pd.first_valid_index()
возвращает индекс, который вызывает KeyError
. Я предполагаю, что сначала мне нужно сделать другое преобразование по моему индексу?