Skip to content

Commit ea19017

Browse files
committed
ENH: add fill_value to resample as per GH3715
1 parent 65362aa commit ea19017

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

40494049
def resample(self, rule, how=None, axis=0, fill_method=None, closed=None,
40504050
label=None, convention='start', kind=None, loffset=None,
4051-
limit=None, base=0, on=None, level=None):
4051+
limit=None, base=0, on=None, level=None, fill_value=None):
40524052
"""
40534053
Convenience method for frequency conversion and resampling of time
40544054
series. Object must have a datetime-like index (DatetimeIndex,
@@ -4083,6 +4083,11 @@ def resample(self, rule, how=None, axis=0, fill_method=None, closed=None,
40834083
40844084
.. versionadded:: 0.19.0
40854085
4086+
fill_value: scalar, optional
4087+
Value to use for missing values, applied before resampling
4088+
4089+
.. version added:: 0.19.2
4090+
40864091
To learn more about the offset strings, please see `this link
40874092
<http://pandas.pydata.org/pandas-docs/stable/timeseries.html#offset-aliases>`__.
40884093
@@ -4187,6 +4192,10 @@ def resample(self, rule, how=None, axis=0, fill_method=None, closed=None,
41874192
from pandas.tseries.resample import (resample,
41884193
_maybe_process_deprecations)
41894194
axis = self._get_axis_number(axis)
4195+
4196+
if(fill_value is not None):
4197+
self = self.fillna(fill_value)
4198+
41904199
r = resample(self, freq=rule, label=label, closed=closed,
41914200
axis=axis, kind=kind, loffset=loffset,
41924201
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)