KeyError используя Index - PullRequest
       54

KeyError используя Index

1 голос
/ 29 апреля 2020

Извиняюсь за довольно простой c вопрос.

По сути, у меня есть большой фрейм данных, где я вытаскиваю верхние даты для суммы определенных значений. Выглядит так:

hv_toploss = hv.groupby(['END_VALID_DT']).sum()
hv_toploss=hv_toploss.sort_values('TOTALPL',ascending=False).iloc[:10]
hv_toploss['END_VALID_DT'] = pd.to_datetime(hv_toploss['END_VALID_DT'])

Теперь END_VALID_DT становится индексом hv_toploss, и я получаю KeyError при запуске строки 3. Если я пытаюсь переиндексировать, я получаю многоиндексную ошибку, и так как они значения, которые мне нужны, я не могу просто отбросить индекс.

Я буду называть эти значения в такой строке:

PnlByDay = PnlByDay.loc[hv_toploss['END_VALID_DT']]

Любая помощь здесь будет отличной. Я все еще новичок, использующий Python.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

Вы можете использовать индекс напрямую вместо создания другого столбца, содержащего индекс.

the_dates = hv_toploss.sort_values('TOTALPL',ascending=False).iloc[:10].index
PnlByDay.loc[PnlByDay.index.isin(the_dates)]

Я не знаю структуру PnlByDay, поэтому вам, возможно, придется изменить эту часть.

0 голосов
/ 29 апреля 2020

Хорошо, я справился с этим, просто скопировав значения индекса в новый столбец и используя его.

hv_toploss = hv.groupby(['END_VALID_DT']).sum()
hv_toploss['Scenario_Dates'] = hv_toploss.index
hv_toploss=hv_toploss.sort_values('TOTALPL',ascending=False).iloc[:10]

Однако, если у вас есть какие-либо сведения о том, как это сделать правильно , пожалуйста, сообщите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...