pandas.Series.asof #

系列。asof (其中,子集= None ) [来源] #

返回最后一行,其中where之前没有任何 NaN 。

获取没有任何 NaN 的最后一行(对于where中的每个元素,如果列表)。如果是 a DataFrame,则最后一行没有 NaN ,仅考虑列的子集(如果不是None

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

参数
其中日期或类似日期的数组

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

str 的子集或 str 的类似数组,默认None

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

返回
标量、系列或数据帧

返回值可以是:

  • 标量:当self是一个系列时,其中是标量

  • Series:当self是一个 Series 时,其中是一个类数组,或者当self是一个 DataFrame 时,其中是一个标量

  • DataFrame :当self是一个 DataFrame 时,哪里是一个类似数组的

也可以看看

merge_asof

执行 asof 合并。与左连接类似。

笔记

假定日期已排序。如果情况并非如此,则引发。

例子

级数和标量其中.

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

对于序列,其中,返回一个 Series。第一个值是 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