Skip to content

Commit 0e4621b

Browse files
committed
ENH: add fill_value to resample as per GH3715
1 parent 880de30 commit 0e4621b

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

pandas/core/generic.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4060,7 +4060,7 @@ def between_time(self, start_time, end_time, include_start=True,
40604060

40614061
def resample(self, rule, how=None, axis=0, fill_method=None, closed=None,
40624062
label=None, convention='start', kind=None, loffset=None,
4063-
limit=None, base=0, on=None, level=None):
4063+
limit=None, base=0, on=None, level=None, fill_value=None):
40644064
"""
40654065
Convenience method for frequency conversion and resampling of time
40664066
series. Object must have a datetime-like index (DatetimeIndex,
@@ -4095,6 +4095,11 @@ def resample(self, rule, how=None, axis=0, fill_method=None, closed=None,
40954095
40964096
.. versionadded:: 0.19.0
40974097
4098+
fill_value: scalar, optional
4099+
Value to use for missing values, applied before resampling
4100+
4101+
.. version added:: 0.19.2
4102+
40984103
To learn more about the offset strings, please see `this link
40994104
<http://pandas.pydata.org/pandas-docs/stable/timeseries.html#offset-aliases>`__.
41004105
@@ -4199,6 +4204,10 @@ def resample(self, rule, how=None, axis=0, fill_method=None, closed=None,
41994204
from pandas.tseries.resample import (resample,
42004205
_maybe_process_deprecations)
42014206
axis = self._get_axis_number(axis)
4207+
4208+
if(fill_value is not None):
4209+
self = self.fillna(fill_value)
4210+
42024211
r = resample(self, freq=rule, label=label, closed=closed,
42034212
axis=axis, kind=kind, loffset=loffset,
42044213
convention=convention,

pandas/tseries/tests/test_resample.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,25 @@ def test_fillna(self):
361361
with self.assertRaises(ValueError):
362362
r.fillna(0)
363363

364+
def test_fill_value(self):
365+
# setup
366+
rng = pd.date_range('1/1/2016', periods=10, freq='2S')
367+
ts = pd.Series(np.arange(len(rng)), index=rng)
368+
ts2 = pd.Series(np.random.rand(len(rng)), index=rng)
369+
df = pd.DataFrame({'one': ts, 'two': ts2})
370+
371+
# upsample to get NaN values
372+
ts_up = ts.resample('1S').asfreq()
373+
df_up = df.resample('1S').asfreq()
374+
375+
expected_ts = ts_up.fillna(2).resample('2S').sum()
376+
actual_ts = ts_up.resample('2S',fill_value=2).sum()
377+
assert_series_equal(expected_ts, actual_ts)
378+
379+
expected_df = df_up.fillna(1.5).resample('2S').sum()
380+
actual_df = df_up.resample('2S', fill_value=1.5).sum()
381+
assert_frame_equal(expected_df, actual_df)
382+
364383
def test_apply_without_aggregation(self):
365384

366385
# both resample and groupby should work w/o aggregation

0 commit comments

Comments
 (0)