pandas.Series.asof¶

Series.
asof
(self, where, subset=None)[source]¶ Return the last row(s) without any NaNs before where.
The last row (for each element in where, if list) without any NaN is taken. In case of a
DataFrame
, the last row without NaN considering only the subset of columns (if not None)If there is no good value, NaN is returned for a Series or a Series of NaN values for a DataFrame
 Parameters
 wheredate or arraylike of dates
Date(s) before which the last row(s) are returned.
 subsetstr or arraylike of str, default None
For DataFrame, if not None, only use these columns to check for NaNs.
 Returns
 scalar, Series, or DataFrame
The return can be:
scalar : when self is a Series and where is a scalar
Series: when self is a Series and where is an arraylike, or when self is a DataFrame and where is a scalar
DataFrame : when self is a DataFrame and where is an arraylike
Return scalar, Series, or DataFrame.
See also
merge_asof
Perform an asof merge. Similar to left join.
Notes
Dates are assumed to be sorted. Raises if this is not the case.
Examples
A Series and a scalar where.
>>> s = pd.Series([1, 2, np.nan, 4], index=[10, 20, 30, 40]) >>> s 10 1.0 20 2.0 30 NaN 40 4.0 dtype: float64
>>> s.asof(20) 2.0
For a sequence where, a Series is returned. The first value is NaN, because the first element of where is before the first index value.
>>> s.asof([5, 20]) 5 NaN 20 2.0 dtype: float64
Missing values are not considered. The following is
2.0
, not NaN, even though NaN is at the index location for30
.>>> s.asof(30) 2.0
Take all columns into consideration
>>> df = pd.DataFrame({'a': [10, 20, 30, 40, 50], ... 'b': [None, None, None, None, 500]}, ... index=pd.DatetimeIndex(['20180227 09:01:00', ... '20180227 09:02:00', ... '20180227 09:03:00', ... '20180227 09:04:00', ... '20180227 09:05:00'])) >>> df.asof(pd.DatetimeIndex(['20180227 09:03:30', ... '20180227 09:04:30'])) a b 20180227 09:03:30 NaN NaN 20180227 09:04:30 NaN NaN
Take a single column into consideration
>>> df.asof(pd.DatetimeIndex(['20180227 09:03:30', ... '20180227 09:04:30']), ... subset=['a']) a b 20180227 09:03:30 30.0 NaN 20180227 09:04:30 40.0 NaN