Spec-Zone.ru › pandas 0.25

pandas.DataFrame.asof

DataFrame.asof(self, where, subset=None) [source]

Возвращает последнюю строку(и) без каких-либо значений NaN до where.

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

Добавлено в версии 0.19.0: Для DataFrame

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

Параметры:
where : date or array-like of dates

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

subset : str or array-like of str, default None

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

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

Возврат может быть:

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

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

См. также

merge_asof
Выполнить слияние asof. Аналогично левому соединению.

Примечания

Предполагается, что даты отсортированы. Возникает ошибка, если это не так.

Примеры

Series и скаляр 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, возвращается 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

© 2008–2012, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/0.25.0/reference/api/pandas.DataFrame.asof.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API