One option is to use cut to bin this data (much less elegant than reselecting, but here):
In [11]: cat, retbins = pd.cut(s.index, np.arange(1, 3, 0.1), retbins=True) In [12]: s.index = retbins[cat.labels] In [13]: s Out[13]: 1.0 10 2.2 20 dtype: int64
Say if you want to reprofile like = 'sum':
In [14]: s = s.groupby(s.index).sum() In [15]: s = s.reindex(retbins)
There are many NaNs now, now, as Tom says, you can interpolate:
In [16]: s.interpolate()
source share