Skip to content

Commit f7ccc8a

Browse files
committed
ENH pandas-dev#3715: add documentation and tests
1 parent 7397472 commit f7ccc8a

File tree

3 files changed

+65
-0
lines changed

3 files changed

+65
-0
lines changed

pandas/core/generic.py

+39
Original file line numberDiff line numberDiff line change
@@ -4084,6 +4084,45 @@ def asfreq(self, freq, method=None, how=None, normalize=False,
40844084
-------
40854085
converted : type of caller
40864086
4087+
Examples
4088+
--------
4089+
4090+
Start by creating a series with 4 one minute timestamps.
4091+
4092+
>>> index = pd.date_range('1/1/2000', periods=4, freq='T')
4093+
>>> series = pd.Series([0.0, None, 2.0, 3.0], index=index)
4094+
>>> df = pd.DataFrame({'s':series})
4095+
>>> df
4096+
s
4097+
2000-01-01 00:00:00 0.0
4098+
2000-01-01 00:01:00 NaN
4099+
2000-01-01 00:02:00 2.0
4100+
2000-01-01 00:03:00 3.0
4101+
4102+
Upsample the series into 30 second bins.
4103+
4104+
>>> df.asfreq(freq='30S')
4105+
s
4106+
2000-01-01 00:00:00 0.0
4107+
2000-01-01 00:00:30 NaN
4108+
2000-01-01 00:01:00 NaN
4109+
2000-01-01 00:01:30 NaN
4110+
2000-01-01 00:02:00 2.0
4111+
2000-01-01 00:02:30 NaN
4112+
2000-01-01 00:03:00 3.0
4113+
4114+
Upsample again, providing a ``fill value``.
4115+
4116+
>>> df.asfreq(freq='30S', fill_value=9.0)
4117+
s
4118+
2000-01-01 00:00:00 0.0
4119+
2000-01-01 00:00:30 9.0
4120+
2000-01-01 00:01:00 NaN
4121+
2000-01-01 00:01:30 9.0
4122+
2000-01-01 00:02:00 2.0
4123+
2000-01-01 00:02:30 9.0
4124+
2000-01-01 00:03:00 3.0
4125+
40874126
Notes
40884127
-----
40894128
To learn more about the frequency strings, please see `this link

pandas/tests/frame/test_timeseries.py

+20
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,26 @@ def test_asfreq_datetimeindex(self):
323323
ts = df['A'].asfreq('B')
324324
tm.assertIsInstance(ts.index, DatetimeIndex)
325325

326+
def test_asfreq_fillvalue(self):
327+
# test for fill value during upsampling, related to issue 3715
328+
329+
# setup
330+
rng = pd.date_range('1/1/2016', periods=10, freq='2S')
331+
ts = pd.Series(np.arange(len(rng)), index=rng)
332+
df = pd.DataFrame({'one': ts})
333+
334+
# insert pre-existing missing value
335+
df.loc['2016-01-01 00:00:08', 'one'] = None
336+
337+
actual_df = df.asfreq(freq='1S', fill_value=9.0)
338+
expected_df = df.asfreq(freq='1S').fillna(9.0)
339+
expected_df.loc['2016-01-01 00:00:08', 'one'] = None
340+
assert_frame_equal(expected_df, actual_df)
341+
342+
expected_series = ts.asfreq(freq='1S').fillna(9.0)
343+
actual_series = ts.asfreq(freq='1S', fill_value=9.0)
344+
assert_series_equal(expected_series, actual_series)
345+
326346
def test_first_last_valid(self):
327347
N = len(self.frame.index)
328348
mat = randn(N)

pandas/tseries/tests/test_resample.py

+6
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,8 @@ def test_fillna(self):
362362
r.fillna(0)
363363

364364
def test_fill_value(self):
365+
# test for fill value during resampling, issue 3715
366+
365367
# setup
366368
rng = pd.date_range('1/1/2016', periods=10, freq='2S')
367369
ts = pd.Series(np.arange(len(rng)), index=rng)
@@ -378,6 +380,10 @@ def test_fill_value(self):
378380

379381
assert_frame_equal(expected_df, actual_df)
380382

383+
expected_series = ts.asfreq(freq='1S').fillna(9.0)
384+
actual_series = ts.asfreq(freq='1S', fill_value=9.0)
385+
assert_series_equal(expected_series, actual_series)
386+
381387
def test_apply_without_aggregation(self):
382388

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

0 commit comments

Comments
 (0)