Spec-Zone.ru › pandas 0.21

pandas.Panel.reindex

Panel.reindex(*args, **kwargs) [source]

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

Параметры:

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

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

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

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

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

copy : boolean, по умолчанию True

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

level : int или имя

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

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

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

limit : int, по умолчанию None

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

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

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

Допуск может быть скалярным значением, которое применяет одинаковый допуск ко всем значениям, или списком, который применяет переменный допуск к каждому элементу. Список включает список, кортеж, массив, Series и должен иметь такой же размер, как и индекс, и его тип данных должен точно соответствовать типу индекса.

New in version 0.17.0.

New in version 0.21.0: (список-подобный допуск)

Возвращает:

reindexed : Panel

Примеры

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.21.1/generated/pandas.Panel.reindex.html

Spec-Zone.ru

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