Панды: Найти значения в нескольких диапазонах, определенных начальными и конечными столбцами - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь использовать два столбца start и stop, чтобы определить несколько диапазонов значений в столбце age другого фрейма данных.Диапазоны определены в df с именем intervals:

start  stop
    1     3
    5     7

Возрасты определены в другом df:

age  some_random_value
  1                100
  2                200
  3                300
  4                400
  5                500
  6                600
  7                700
  8                800
  9                900
 10               1000

Желаемый результат - это значения, где age находится между диапазонами, определенными вintervals (1-3 и 5-7):

age  some_random_value
  1                100
  2                200
  3                300
  5                500
  6                600
  7                700

Я пытался использовать numpy.r_, но он работает не совсем так, как я хочу:

df.age.loc[pd.np.r_[intervals.start, intervals.stop]]

Что дает:

age  some_random_value
  2                200
  6                600
  4                400
  8                800

Любые идеи очень ценятся!

1 Ответ

0 голосов
/ 06 июня 2018

Мне кажется, нужен параметр closed='both' в IntervalIndex.from_arrays:

intervals = pd.IntervalIndex.from_arrays(df2['start'], df2['stop'], 'both')

, а затем выберите подходящие значения:

df = df[intervals.get_indexer(df.age.values) != -1]
print (df)
   age  some_random_value
0    1                100
1    2                200
2    3                300
4    5                500
5    6                600
6    7                700

Сведения :

print (intervals.get_indexer(df.age.values))
[ 0  0  0 -1  1  1  1 -1 -1 -1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...