#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]