Как найти интервалы диапазона столбца с помощью count и сравнить его значения?

#python #pandas

#python #pandas

Вопрос:

Ниже приведен мой демонстрационный фрейм данных:

 df=pd.DataFrame({"a": np.random.randint(1, high=50, size=50)})
bins =np.arange(0,df['a'].max() 1,5).astype('int') # this range interval with 5 
 

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

 df.a.value_counts(bins=bins,sort=False)

(-0.001, 5.0]     3
(5.0, 10.0]       2
(10.0, 15.0]      5
(15.0, 20.0]      3
(20.0, 25.0]      5
(25.0, 30.0]     10
(30.0, 35.0]      6
(35.0, 40.0]      6
(40.0, 45.0]      4
 

я хочу, чтобы, когда я укажу диапазон, [20:50] он вернул максимальное количество между ним.

Здесь я 10 также хочу знать, что это внутри [25:30] . Также, если возможно, реальные значения между ним или его среднее значение.

Ответ №1:

Попробуйте overlaps метод:

 # the counts
counts = df.a.value_counts(bins=bins,sort=False)

# query interval
interval = pd.Interval(20,50)

counts.loc[counts.index.overlaps(interval)].idxmax()
 

Комментарии:

1. что добавить interval

2. @SurajS смотрите Обновленный ответ. Извините, я забыл включить это.

3. но как получить среднее значение или все значения этого. Interval(25.0, 30.0, closed='right')

4. мне нужно среднее значение либо среднего ((25 30)/2) значения, либо всех значений, присутствующих в этом interval [25:30]