Spec-Zone.ru › pandas 0.23

pandas.Series.reindex

Series.reindex(index=None, **kwargs) [source]

Приведение Series к новому индексу с опциональной логикой заполнения, размещая NA/NaN в позициях, не имеющих значения в предыдущем индексе. Новый объект создаётся, если новый индекс не эквивалентен текущему, и copy=False

Параметры:

index : массив-подобный объект, необязательно (должен быть указан с помощью ключевых слов)

Новые метки/индекс для приведения. Предпочтительно объект Index для избежания дублирования данных

method : {None, ‘backfill’/’bfill’, ‘pad’/’ffill’, ‘nearest’}, необязательно

метод заполнения пробелов в переиндексированном DataFrame. Обратите внимание: это применимо только к DataFrame/Series с монотонно возрастающим/убывающим индексом.

  • по умолчанию: пробелы не заполняются
  • pad / ffill: последнее действительное наблюдение распространяется вперёд к следующему действительному
  • backfill / bfill: следующее действительное наблюдение используется для заполнения пробела
  • nearest: используются ближайшие действительные наблюдения для заполнения пробела

copy : булево, по умолчанию True

Возвращает новый объект, даже если переданные индексы одинаковые

level : целое число или имя

Трансляция по уровню, сопоставляя значения Index с переданным уровнем MultiIndex

fill_value : скаляр, по умолчанию np.NaN

Значение для использования в случае отсутствующих значений. По умолчанию NaN, но может быть любым «совместимым» значением

limit : целое число, по умолчанию None

Максимальное количество последовательных элементов для заполнения вперёд или назад

tolerance : необязательно

Максимальное расстояние между исходными и новыми метками для неточного совпадения. Значения индекса в соответствующих позициях должны удовлетворять уравнению abs(index[indexer] - target) <= tolerance. Допуск может быть скалярным значением, которое применяет одинаковый допуск ко всем значениям, или списком, который применяет переменный допуск к каждому элементу. Список включает список, кортеж, массив, Series и должен иметь тот же размер, что и индекс, а его тип данных должен точно соответствовать типу индекса.

В версии 0.21.0: (список допуска)

Возвращает:
reindexed : Series

Примеры

DataFrame.reindex поддерживает две схемы вызова

  • (index=index_labels, columns=column_labels, ...)
  • (labels, axis={'index', 'columns'}, ...)

Мы настоятельно рекомендуем использовать ключевые аргументы для ясности вашего намерения.

Создадим DataFrame с некоторыми вымышленными данными.

>>> index = ['Firefox', 'Chrome', 'Safari', 'IE10', 'Konqueror']
>>> df = pd.DataFrame({
...      'http_status': [200,200,404,404,301],
...      'response_time': [0.04, 0.02, 0.07, 0.08, 1.0]},
...       index=index)
>>> df
           http_status  response_time
Firefox            200           0.04
Chrome             200           0.02
Safari             404           0.07
IE10               404           0.08
Konqueror          301           1.00

Создадим новый индекс и переиндексируем DataFrame. По умолчанию значения в новом индексе, которые не имеют соответствующих записей в DataFrame, присваиваются NaN.

>>> new_index= ['Safari', 'Iceweasel', 'Comodo Dragon', 'IE10',
...             'Chrome']
>>> df.reindex(new_index)
               http_status  response_time
Safari               404.0           0.07
Iceweasel              NaN            NaN
Comodo Dragon          NaN            NaN
IE10                 404.0           0.08
Chrome               200.0           0.02

Мы можем заполнить отсутствующие значения, передав значение в ключевое слово fill_value. Поскольку индекс не является монотонно возрастающим или убывающим, мы не можем использовать аргументы ключевого слова method для заполнения NaN значений.

>>> df.reindex(new_index, fill_value=0)
               http_status  response_time
Safari                 404           0.07
Iceweasel                0           0.00
Comodo Dragon            0           0.00
IE10                   404           0.08
Chrome                 200           0.02
>>> df.reindex(new_index, fill_value='missing')
              http_status response_time
Safari                404          0.07
Iceweasel         missing       missing
Comodo Dragon     missing       missing
IE10                  404          0.08
Chrome                200          0.02

Мы также можем переиндексировать столбцы.

>>> df.reindex(columns=['http_status', 'user_agent'])
           http_status  user_agent
Firefox            200         NaN
Chrome             200         NaN
Safari             404         NaN
IE10               404         NaN
Konqueror          301         NaN

Или мы можем использовать ключевые слова «стиля оси»

>>> df.reindex(['http_status', 'user_agent'], axis="columns")
           http_status  user_agent
Firefox            200         NaN
Chrome             200         NaN
Safari             404         NaN
IE10               404         NaN
Konqueror          301         NaN

Для дальнейшей иллюстрации функциональности заполнения в reindex, мы создадим DataFrame с монотонно возрастающим индексом (например, последовательностью дат).

>>> date_index = pd.date_range('1/1/2010', periods=6, freq='D')
>>> df2 = pd.DataFrame({"prices": [100, 101, np.nan, 100, 89, 88]},
...                    index=date_index)
>>> df2
            prices
2010-01-01     100
2010-01-02     101
2010-01-03     NaN
2010-01-04     100
2010-01-05      89
2010-01-06      88

Предположим, мы решили расширить DataFrame для охвата более широкого диапазона дат.

>>> date_index2 = pd.date_range('12/29/2009', periods=10, freq='D')
>>> df2.reindex(date_index2)
            prices
2009-12-29     NaN
2009-12-30     NaN
2009-12-31     NaN
2010-01-01     100
2010-01-02     101
2010-01-03     NaN
2010-01-04     100
2010-01-05      89
2010-01-06      88
2010-01-07     NaN

Записи индекса, которые не имели значения в исходном DataFrame (например, «2009-12-29»), по умолчанию заполняются NaN. При желании мы можем заполнить отсутствующие значения, используя один из нескольких вариантов.

Например, для обратного распространения последнего действительного значения для заполнения NaN значений, передайте bfill как аргумент ключевому слову method.

>>> df2.reindex(date_index2, method='bfill')
            prices
2009-12-29     100
2009-12-30     100
2009-12-31     100
2010-01-01     100
2010-01-02     101
2010-01-03     NaN
2010-01-04     100
2010-01-05      89
2010-01-06      88
2010-01-07     NaN

Обратите внимание, что значение NaN, присутствующее в исходном DataFrame (в индексе 2010-01-03), не будет заполнено ни одной из схем распространения значений. Это потому, что заполнение при переиндексации не анализирует значения DataFrame, а только сравнивает исходные и целевые индексы. Если вы хотите заполнить NaN значения, присутствующие в исходном DataFrame, используйте метод fillna().

См. руководство пользователя для получения дополнительной информации.

© 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.23.4/generated/pandas.Series.reindex.html

Spec-Zone.ru

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