pandas.DataFrame.asof#

DataFrame.asof(где, subset=None)[источник]#

Вернуть последнюю строку(и) без каких-либо NaN перед где.

Последняя строка (для каждого элемента в где, если список) без каких-либо NaN принимается. В случае DataFrame, последняя строка без NaN, учитывая только подмножество столбцов (если не None)

Если нет подходящего значения, возвращается NaN для Series или Series значений NaN для DataFrame

Параметры:
гдедата или массивоподобный объект дат

Дата(ы), до которой(ых) возвращаются последние строки.

subsetstr или array-like из str, по умолчанию None

Для DataFrame, если не None, используйте только эти столбцы для проверки на NaN.

Возвращает:
скаляр, Series или DataFrame

Возвращаемое значение может быть:

  • скаляр: когда self является Series и где является скаляром

  • Series: когда self является Series и где является массивоподобным, или когда self является DataFrame и где является скаляром

  • DataFrame : когда self является DataFrame и где является массивоподобным

Смотрите также

merge_asof

Выполнить asof-слияние. Похоже на левое соединение.

Примечания

Даты предполагаются отсортированными. Вызывает ошибку, если это не так.

Примеры

Series и скаляр где.

>>> 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, потому что первый элемент где находится перед первым значением индекса.

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