當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。