On this page
pandas.DataFrame.asof
DataFrame.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 aDataFrame, the last row without NaN considering only the subset of columns (if notNone)New in version 0.19.0: For DataFrame
If there is no good value, NaN is returned for a Series or a Series of NaN values for a DataFrame
Parameters: -
where : date or array-like of dates -
Date(s) before which the last row(s) are returned.
-
subset : str or array-like 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
selfis a Series andwhereis a scalar - Series: when
selfis a Series andwhereis an array-like, or whenselfis a DataFrame andwhereis a scalar - DataFrame : when
selfis a DataFrame andwhereis an array-like
Return scalar, Series, or DataFrame.
- scalar : when
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.0For a sequence
where, a Series is returned. The first value is NaN, because the first element ofwhereis before the first index value.>>> s.asof([5, 20]) 5 NaN 20 2.0 dtype: float64Missing values are not considered. The following is
2.0, not NaN, even though NaN is at the index location for30.>>> s.asof(30) 2.0Take all columns into consideration
>>> df = pd.DataFrame({'a': [10, 20, 30, 40, 50], ... 'b': [None, None, None, None, 500]}, ... index=pd.DatetimeIndex(['2018-02-27 09:01:00', ... '2018-02-27 09:02:00', ... '2018-02-27 09:03:00', ... '2018-02-27 09:04:00', ... '2018-02-27 09:05:00'])) >>> df.asof(pd.DatetimeIndex(['2018-02-27 09:03:30', ... '2018-02-27 09:04:30'])) a b 2018-02-27 09:03:30 NaN NaN 2018-02-27 09:04:30 NaN NaNTake a single column into consideration
>>> df.asof(pd.DatetimeIndex(['2018-02-27 09:03:30', ... '2018-02-27 09:04:30']), ... subset=['a']) a b 2018-02-27 09:03:30 30.0 NaN 2018-02-27 09:04:30 40.0 NaN -
© 2008–2012, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/0.25.0/reference/api/pandas.DataFrame.asof.html