当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python pandas.DataFrame.asof用法及代码示例


用法:

DataFrame.asof(where, subset=None)

返回 where 之前没有任何 NaN 的最后一行。

取最后一行(对于 where 中的每个元素,如果是列表)没有任何 NaN。在 DataFrame 的情况下,没有 NaN 的最后一行只考虑列的子集(如果不是 None )

如果没有好的值,则为 DataFrame 的 Series 或一系列 NaN 值返回 NaN

参数

where日期或 array-like 个日期

返回最后一行之前的日期。

subset

str 或 array-like of str,默认 None

对于 DataFrame,如果不是 None ,则仅使用这些列来检查 NaN。

返回

标量、系列或数据帧

返回可以是:

  • 标量:当self 是系列且where 是标量时

  • 系列:当self 是系列且where 是array-like 时,或者当self 是DataFrame 而where 是标量时

  • DataFrame:当self 是DataFrame 并且where 是array-like

返回标量、系列或数据帧。

注意

假定日期已排序。如果不是这种情况,则引发。

例子

一个系列和一个标量 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

对于序列 where ,返回一个系列。第一个值是 NaN,因为 where 的第一个元素在第一个索引值之前。

>>> s.asof([5, 20])
5     NaN
20    2.0
dtype:float64

不考虑缺失值。以下是 2.0 ,而不是 NaN,即使 NaN 位于 30 的索引位置。

>>> s.asof(30)
2.0

考虑所有列

>>> 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 NaN

考虑单个列

>>> 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

相关用法


注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.DataFrame.asof。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。