Pandas Multi-Index Выберите диапазон для первого индекса? - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть многоуровневый индексный фрейм данных с уровнями 0 и 1. Уровень 0 - это дата, а уровень 1 - это идентификаторы активов.

Я просто пытаюсь выбрать фрагмент кадра данных на основе индекса уровня 0. Например:

df [-10:] извлекает все строки с последними 10 индексами в соответствии с уровнем 0.

Я пробовал множество вещей, похожих на эту:

master_df.loc[(-3, ), :] 

Как правило, я получаю некоторую форму несоответствия типов для уровня. Индекс уровня 0 имеет дату и время, но я отсортировал его и хочу получить доступ к числовому диапазону. Мой срез должен содержать последние X дней со всеми связанными активами и данными в этом.

Вот еще одна неудачная попытка получить 10 самых последних со всеми вторыми индексами и всеми столбцами. Не удается выполнить «Не удается выполнить индексирование срезов для класса DatetimeIndex с этими индексаторами класса int»

idx = pd.IndexSlice
master_df.loc[idx[-10:,:], :]

Спасибо за любые советы!

1 Ответ

0 голосов
/ 03 сентября 2018

решаемые

Вы можете отсортировать свой индекс, затем вернуть значения в виде массива, нарезать их и поместить в секцию .loc. Ниже приведен рабочий пример:

def get_slice(slicer, df):
    vals = df.index.levels[0][-slicer:]
    return df.loc[pd.IndexSlice[vals,:], :].copy()

Это нарезает первый индекс на n (начиная с конца), возвращая вам конкретные значения в массиве, который затем можно передать в .loc, который примет массив значений.

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