Skip to content

Commit 0b07b07

Browse files
sahildua2305jreback
authored andcommitted
BUG: Set frequency for empty Series
closes #14320 Author: Sahil Dua <[email protected]> Closes #14458 from sahildua2305/frequency-series-fix and squashes the following commits: 384e666 [Sahil Dua] BUG: Set frequency for empty Series
1 parent 524a9a0 commit 0b07b07

File tree

3 files changed

+21
-8
lines changed

3 files changed

+21
-8
lines changed

doc/source/whatsnew/v0.20.0.txt

+3
Original file line numberDiff line numberDiff line change
@@ -605,6 +605,9 @@ Bug Fixes
605605

606606

607607
- Bug in the display of ``.info()`` where a qualifier (+) would always be displayed with a ``MultiIndex`` that contains only non-strings (:issue:`15245`)
608+
609+
- Bug in ``.asfreq()``, where frequency was not set for empty ``Series` (:issue:`14320`)
610+
608611
- Bug in ``pd.read_msgpack()`` in which ``Series`` categoricals were being improperly processed (:issue:`14901`)
609612
- Bug in ``Series.ffill()`` with mixed dtypes containing tz-aware datetimes. (:issue:`14956`)
610613

pandas/tests/series/test_timeseries.py

+8
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,14 @@ def test_asfreq(self):
260260
index=[-1.0, 2.0, 1.0, 0.0]).sort_index()
261261
assert_series_equal(result, expected)
262262

263+
def test_asfreq_datetimeindex_empty_series(self):
264+
# GH 14320
265+
expected = Series(index=pd.DatetimeIndex(
266+
["2016-09-29 11:00"])).asfreq('H')
267+
result = Series(index=pd.DatetimeIndex(["2016-09-29 11:00"]),
268+
data=[3]).asfreq('H')
269+
self.assert_index_equal(expected.index, result.index)
270+
263271
def test_diff(self):
264272
# Just run the function
265273
self.ts.diff()

pandas/tseries/resample.py

+10-8
Original file line numberDiff line numberDiff line change
@@ -1382,16 +1382,18 @@ def asfreq(obj, freq, method=None, how=None, normalize=False, fill_value=None):
13821382
if how is None:
13831383
how = 'E'
13841384

1385-
new_index = obj.index.asfreq(freq, how=how)
13861385
new_obj = obj.copy()
1387-
new_obj.index = new_index
1388-
return new_obj
1386+
new_obj.index = obj.index.asfreq(freq, how=how)
1387+
1388+
elif len(obj.index) == 0:
1389+
new_obj = obj.copy()
1390+
new_obj.index = obj.index._shallow_copy(freq=to_offset(freq))
1391+
13891392
else:
1390-
if len(obj.index) == 0:
1391-
return obj.copy()
13921393
dti = date_range(obj.index[0], obj.index[-1], freq=freq)
13931394
dti.name = obj.index.name
1394-
rs = obj.reindex(dti, method=method, fill_value=fill_value)
1395+
new_obj = obj.reindex(dti, method=method, fill_value=fill_value)
13951396
if normalize:
1396-
rs.index = rs.index.normalize()
1397-
return rs
1397+
new_obj.index = new_obj.index.normalize()
1398+
1399+
return new_obj

0 commit comments

Comments
 (0)