Мне приходится иметь дело с сериями с полуоткрытым интервалом в качестве индекса, как этот:
import pandas as pd
index = pd.interval_range(5,50,9, closed='left')
values = [8, 8, 14, 4, 6, 12, 8, 3, 2]
s = pd.Series(values, index)
s
выход
[5, 10) 8
[10, 15) 8
[15, 20) 14
[20, 25) 4
[25, 30) 6
[30, 35) 12
[35, 40) 8
[40, 45) 3
[45, 50) 2
dtype: int64
Я хочу автоматически вычислить среднюю точку и использовать ее за сценой для вычислений.
Если я использую функцию pandas.IntervalIndex.mid
, которая, согласно документации, " возвращает среднюю точку каждого интервала в IntervalIndex в качестве индекса ", я получаю:
Float64Index([7.5, 12.5, 17.5, 22.5, 27.5, 32.5, 37.5, 42.5, 47.5], dtype='float64')
Проблема в том, что мой интервал равен closed='left'
, поэтому ожидаемый результат:
Float64Index([7., 12., 17., 22., 27., 32., 37., 42., 47.], dtype='float64')
Если интервал был closed='right'
, я ожидаю:
Float64Index([8., 13., 18., 23., 28., 33., 38., 43., 48.], dtype='float64')
Есть ли способ автоматически получить половину точки для открытого или полуоткрытого интервала без указания смещения для значений, возвращаемых pandas.IntervalIndex.mid
? Для серии, использованной в примере, смещение будет равно -0,5.