Skip to content

Commit 6b745af

Browse files
author
Carlos Souza
committed
Adding DataFrame tests & support, and optimizing the code
1 parent 89fb6cf commit 6b745af

File tree

3 files changed

+19
-12
lines changed

3 files changed

+19
-12
lines changed

pandas/core/generic.py

+6-3
Original file line numberDiff line numberDiff line change
@@ -3971,10 +3971,13 @@ def asof(self, where, subset=None):
39713971
if not isinstance(where, Index):
39723972
where = Index(where) if is_list else Index([where])
39733973

3974-
if self.isnull().values.all():
3975-
return pd.Series([np.nan])
3976-
39773974
nulls = self.isnull() if is_series else self[subset].isnull().any(1)
3975+
if nulls.values.all():
3976+
if is_series:
3977+
return pd.Series([np.nan])
3978+
else:
3979+
return pd.DataFrame([np.nan])
3980+
39783981
locs = self.index.asof_locs(where, ~(nulls.values))
39793982

39803983
# mask the missing

pandas/tests/frame/test_asof.py

+11-6
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
from pandas import (DataFrame, date_range, Timestamp, Series,
55
to_datetime)
66

7-
from pandas.util.testing import assert_frame_equal, assert_series_equal
87
import pandas.util.testing as tm
98

109
from .common import TestData
@@ -51,19 +50,19 @@ def test_subset(self):
5150
# with a subset of A should be the same
5251
result = df.asof(dates, subset='A')
5352
expected = df.asof(dates)
54-
assert_frame_equal(result, expected)
53+
tm.assert_frame_equal(result, expected)
5554

5655
# same with A/B
5756
result = df.asof(dates, subset=['A', 'B'])
5857
expected = df.asof(dates)
59-
assert_frame_equal(result, expected)
58+
tm.assert_frame_equal(result, expected)
6059

6160
# B gives self.df.asof
6261
result = df.asof(dates, subset='B')
6362
expected = df.resample('25s', closed='right').ffill().reindex(dates)
6463
expected.iloc[20:] = 9
6564

66-
assert_frame_equal(result, expected)
65+
tm.assert_frame_equal(result, expected)
6766

6867
def test_missing(self):
6968
# GH 15118
@@ -75,9 +74,15 @@ def test_missing(self):
7574
result = df.asof('1989-12-31')
7675

7776
expected = Series(index=['A', 'B'], name=Timestamp('1989-12-31'))
78-
assert_series_equal(result, expected)
77+
tm.assert_series_equal(result, expected)
7978

8079
result = df.asof(to_datetime(['1989-12-31']))
8180
expected = DataFrame(index=to_datetime(['1989-12-31']),
8281
columns=['A', 'B'], dtype='float64')
83-
assert_frame_equal(result, expected)
82+
tm.assert_frame_equal(result, expected)
83+
84+
def test_all_nans(self):
85+
# series is all nans
86+
result = DataFrame([np.nan]).asof([0])
87+
expected = DataFrame([np.nan])
88+
tm.assert_frame_equal(result, expected)

pandas/tests/series/test_asof.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
from pandas import (offsets, Series, notnull,
55
isnull, date_range, Timestamp)
66

7-
from pandas.util.testing import assert_series_equal
8-
97
import pandas.util.testing as tm
108

119
from .common import TestData
@@ -151,7 +149,8 @@ def test_errors(self):
151149
with self.assertRaises(ValueError):
152150
s.asof(s.index[0], subset='foo')
153151

152+
def test_all_nans(self):
154153
# series is all nans
155154
result = Series([np.nan]).asof([0])
156155
expected = Series([np.nan])
157-
assert_series_equal(result, expected)
156+
tm.assert_series_equal(result, expected)

0 commit comments

Comments
 (0)