РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
19 of 687 menu

Метод reindex_like

Метод reindex_like применяется к DataFrame и изменяет его индексы строк и столбцов так, чтобы они совпадали с индексами другого переданного DataFrame. Это удобно, когда нужно привести несколько таблиц к единой структуре индексов перед операциями сложения или вычитания. Если в исходной таблице отсутствуют какие-то индексы или столбцы, для них будут вставлены значения NaN.

Первым параметром передается другой DataFrame, чьи индексы будут использованы в качестве эталона. Также можно передать дополнительные параметры, такие как method для способа заполнения пропусков, copy для управления копированием данных и limit для ограничения количества заполнений.

Синтаксис

df.reindex_like(other_df[, method='fill', copy=True, limit=None])

Пример

Пусть у нас есть две таблицы с разными индексами строк и столбцов. Приведем индексы первой таблицы в соответствие со второй:

import pandas as pd df1 = pd.DataFrame({ 'a': [1, 2, 3], 'b': [4, 5, 6] }, index=[0, 1, 2]) df2 = pd.DataFrame({ 'b': [10, 20], 'c': [30, 40] }, index=[1, 3]) res = df1.reindex_like(df2) print(res)

Результат выполнения кода:

a b 1 2.0 5 3 NaN NaN

Как видим, у результирующей таблицы индексы стали [1, 3], столбцы ['a', 'b']. Для индекса 3 по столбцам a и b были вставлены значения NaN, так как в исходной таблице такой строки не было. Для индекса 1 значения сохранились.

Пример

Если индексы столбцов не совпадают, то в результирующей таблице появятся только те столбцы, которые есть в эталонной таблице:

import pandas as pd df1 = pd.DataFrame({ 'a': [1, 2, 3, 4], 'b': [5, 6, 7, 8], 'c': [9, 10, 11, 12] }) df2 = pd.DataFrame({ 'b': [100, 200], 'd': [300, 400] }) res = df1.reindex_like(df2) print(res)

Результат выполнения кода:

b d 0 5.0 NaN 1 6.0 NaN

Из исходной таблицы были взяты только две первых строки (поскольку в эталонной таблице два индекса), и только столбец b, так как столбца d в исходной таблице нет.

Пример

Параметр method позволяет заполнять пропуски значениями из ближайших индексов. Например, используем метод ffill (forward fill) для заполнения пропусков сверху вниз:

import pandas as pd df1 = pd.DataFrame({ 'a': [1, 2, 3, 4], 'b': [5, 6, 7, 8] }, index=[0, 1, 2, 3]) df2 = pd.DataFrame({ 'a': [10, 20], 'b': [30, 40] }, index=[1, 3]) res = df1.reindex_like(df2, method='ffill') print(res)

Результат выполнения кода:

a b 1 2.0 6 3 4.0 8

Индексы 1 и 3 присутствуют в исходной таблице, поэтому значения остались без изменений. Если бы были пропуски, они бы заполнились предыдущими значениями.

Пример

Также можно использовать параметр fill_value для замены пропусков конкретным значением, например 0:

import pandas as pd df1 = pd.DataFrame({ 'a': [1, 2, 3], 'b': [4, 5, 6] }, index=[0, 1, 2]) df2 = pd.DataFrame({ 'a': [10, 20, 30], 'b': [40, 50, 60], 'c': [70, 80, 90] }, index=[1, 2, 4]) res = df1.reindex_like(df2, fill_value=0) print(res)

Результат выполнения кода:

a b c 1 2.0 5 0 2 3.0 6 0 4 0.0 0 0

Все отсутствующие значения были заменены на 0. Столбец c полностью заполнен нулями, так как его нет в исходной таблице.

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

  • метод reindex,
    который изменяет индексы по заданным спискам
  • метод align,
    который выравнивает два объекта по индексам одновременно
  • метод combine_first,
    который заполняет пропуски значениями из другого объекта
  • метод fillna,
    который заполняет пропуски в таблице указанным способом
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить