Skip to content

Commit 2ba415e

Browse files
committed
ENH: add fill_value to resample as per GH3715
1 parent 0252385 commit 2ba415e

File tree

2 files changed

+28
-3
lines changed

2 files changed

+28
-3
lines changed

pandas/core/generic.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4131,7 +4131,7 @@ def between_time(self, start_time, end_time, include_start=True,
41314131

41324132
def resample(self, rule, how=None, axis=0, fill_method=None, closed=None,
41334133
label=None, convention='start', kind=None, loffset=None,
4134-
limit=None, base=0, on=None, level=None):
4134+
limit=None, base=0, on=None, level=None, fill_value=None):
41354135
"""
41364136
Convenience method for frequency conversion and resampling of time
41374137
series. Object must have a datetime-like index (DatetimeIndex,
@@ -4166,8 +4166,10 @@ def resample(self, rule, how=None, axis=0, fill_method=None, closed=None,
41664166
41674167
.. versionadded:: 0.19.0
41684168
4169-
Notes
4170-
-----
4169+
fill_value: scalar, optional
4170+
Value to use for missing values, applied before resampling
4171+
4172+
.. version added:: 0.19.2
41714173
41724174
To learn more about the offset strings, please see `this link
41734175
<http://pandas.pydata.org/pandas-docs/stable/timeseries.html#offset-aliases>`__.
@@ -4273,6 +4275,10 @@ def resample(self, rule, how=None, axis=0, fill_method=None, closed=None,
42734275
from pandas.tseries.resample import (resample,
42744276
_maybe_process_deprecations)
42754277
axis = self._get_axis_number(axis)
4278+
4279+
if(fill_value is not None):
4280+
self = self.fillna(fill_value)
4281+
42764282
r = resample(self, freq=rule, label=label, closed=closed,
42774283
axis=axis, kind=kind, loffset=loffset,
42784284
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)