DataFrame.asof(where, subset=None)
返回前最后一行(S)没有任何NaN的地方。
不带任何NaN
的最后一行(对于where,if list中的每个元素)。在a的情况下,DataFrame没有NaN
的最后一行仅考虑列的子集(如果不是None)
版本0.19.0中的新功能:适用于DataFrame
如果没有好的值,则返回一个DataFrame
的Series
或一系列NaN
值的NaN
。
参数: | where : 日期或数组的日期 返回最后一行之前的日期。 subset : str或str-array,默认为None 对于DataFrame,如果不是None, 则仅使用这些列来检查NaN。 |
返回: | scalar, Series, or DataFrame scalar:当自我是一个Series而在哪里是一个标量 Series:当自为Series并且其中为阵列状时, 或当自是一个DataFrame,并在那里是scalar DataFrame:当self是DataFrame时,where是类似数组的 |
例子,
Series和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
对于一个Series,其中,将返回一个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