pandas.IntervalIndex.mid半打开IntervalIndex

时间:2018-08-28 08:04:29

标签: python pandas

我必须以半开间隔作为索引来处理Series,就像这样:

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中每个Interval的中点作为索引返回”,我将得到:

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。

1 个答案:

答案 0 :(得分:0)

对于靠近左侧的IntervalIndex,您可以使用oauth2Client.setCredentials({ refresh_token: YOUR_STORED_REFRESH_TOKEN }); 来获取预期的索引,如下所示:

np.floor

结果:

np.floor(index.mid)

对于更通用的解决方案,您可以定义一种检查间隔如何关闭的方法:

Float64Index([7.0, 12.0, 17.0, 22.0, 27.0, 32.0, 37.0, 42.0, 47.0], dtype='float64')