Resample nearest · Issue #17496 · pandas-dev/pandas (original) (raw)

pandas supports "pad" (forward fill) and "backfill" upsampling, but not "nearest" upsampling. This could be a nice feature to have, and should be pretty easy, too, as the underlying Index.get_indexer method already supports method='nearest'.

Possibly this would be as easy as adding only a few lines to the Resampler class in pandas/core/resample.py. Just monkey-patching this one-liner method seems to work:

In [47]: def nearest(self, limit=None):
    ...:     return self._upsample('nearest', limit=limit)
    ...:

In [48]: pd.core.resample.Resampler.nearest = nearest

In [49]: index = pd.date_range('1/1/2000', periods=9, freq='T')
    ...:

In [50]: series = pd.Series(range(9), index=index)

In [51]: series.resample('20s').nearest()[:5]
Out[51]:
2000-01-01 00:00:00    0
2000-01-01 00:00:20    0
2000-01-01 00:00:40    1
2000-01-01 00:01:00    1
2000-01-01 00:01:20    1
Freq: 20S, dtype: int64

Obviously this needs tests and documentation. Potetially this could be a good project for a new contributor.

This came up in pydata/xarray#1272 where we are copying the new pandas resample() API to xarray.