Можно ли запросить Pandas IntervalIndex с интервалами

1

Мне просто интересно, есть ли способ запросить интервал Pandas IntervalIndex с интервалом (или диапазоном), в конечном итоге возвращая все интервалы в IntervalIndex, которые перекрываются с запрошенным интервалом.

Например, если задано значение id idx IntervalIndex:

[1,3]
[5,8]
[10,12]

Я хотел бы запросить новый интервал в том же домене:

new_interval = pd.Interval(2, 6, closed="both")

Так что-то вроде этого:

idx.get_loc(new_interval)

>> array([0, 1])

Есть ли способ сделать это (кроме использования дерева интервалов непосредственно)?

Теги:
pandas
intervals
python-3.6

1 ответ

1
Лучший ответ

Использовать get_indexer:

In [1]: import pandas as pd; pd.__version__
Out[1]: '0.23.4'

In [2]: idx = pd.IntervalIndex.from_tuples([(1, 3), (5, 8), (10, 12)], closed='both')

In [3]: idx
Out[3]:
IntervalIndex([[1, 3], [5, 8], [10, 12]]
              closed='both',
              dtype='interval[int64]')

In [4]: new_interval = pd.Interval(2, 6, closed='both')

In [5]: idx.get_indexer([new_interval])
Out[5]: array([0, 1], dtype=int64)
  • 0
    Спасибо, что работает. Просто упомянуть, если кто-то еще сталкивается с этим: индексированные интервалы должны быть уникальными, чтобы это работало!
  • 0
    Немного в сорняках, но для неуникальных индексов у вас может быть успех с _get_reindexer , например, idx._get_reindexer(pd.IntervalIndex([new_interval])) . Я ожидаю, что get_indexer_non_unique тоже будет работать, но в данный момент выглядит get_indexer_non_unique .
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню