Skip to content

Commit 66bd2dd

Browse files
committed
ENH: add fill_value to resample as per GH3715
1 parent 588e29d commit 66bd2dd

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
@@ -4067,7 +4067,7 @@ def between_time(self, start_time, end_time, include_start=True,
40674067

40684068
def resample(self, rule, how=None, axis=0, fill_method=None, closed=None,
40694069
label=None, convention='start', kind=None, loffset=None,
4070-
limit=None, base=0, on=None, level=None):
4070+
limit=None, base=0, on=None, level=None, fill_value=None):
40714071
"""
40724072
Convenience method for frequency conversion and resampling of time
40734073
series. Object must have a datetime-like index (DatetimeIndex,
@@ -4102,6 +4102,11 @@ def resample(self, rule, how=None, axis=0, fill_method=None, closed=None,
41024102
41034103
.. versionadded:: 0.19.0
41044104
4105+
fill_value: scalar, optional
4106+
Value to use for missing values, applied before resampling
4107+
4108+
.. version added:: 0.19.2
4109+
41054110
To learn more about the offset strings, please see `this link
41064111
<http://pandas.pydata.org/pandas-docs/stable/timeseries.html#offset-aliases>`__.
41074112
@@ -4206,6 +4211,10 @@ def resample(self, rule, how=None, axis=0, fill_method=None, closed=None,
42064211
from pandas.tseries.resample import (resample,
42074212
_maybe_process_deprecations)
42084213
axis = self._get_axis_number(axis)
4214+
4215+
if(fill_value is not None):
4216+
self = self.fillna(fill_value)
4217+
42094218
r = resample(self, freq=rule, label=label, closed=closed,
42104219
axis=axis, kind=kind, loffset=loffset,
42114220
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)