Объяснил на примерах.

Pandas DataFrames — это двумерные структуры данных с помеченными строками и столбцами.

Иногда нам нужно выполнить поэлементное сравнение двух DataFrames. Например:

  • Обновите значения в DataFrame, используя значения в другом.
  • Сравните значения и выберите большее или меньшее значение.

В этой статье мы изучим четыре разные функции Pandas, которые можно использовать для таких задач. Мы также приведем примеры, чтобы лучше понять разницу и сходство между ними.

Давайте сначала создадим два кадра данных для использования в примерах.

import numpy as np
import pandas as pd

# create DataFrames with random integers
df1 = pd.DataFrame(np.random.randint(0, 10, size=(4, 4)), columns=list("ABCD"))
df2 = pd.DataFrame(np.random.randint(0, 10, size=(4, 4)), columns=list("ABCD"))

# add a couple of missing values
df1.iloc[2, 3] = np.nan
df1.iloc[1, 2] = np.nan

1. комбинировать

Функция combine выполняет поэлементное сравнение на основе заданной функции.

Например, мы можем выбрать максимальное значение из двух значений для каждой позиции. Будет понятнее, когда мы сделаем пример.

combined_df = df1.combine(df2, np.maximum)

Взгляните на значение в первой строке и первом столбце. Комбинированный DataFrame имеет больший из 5 и 2.

Если одно из значений равно NaN (то есть отсутствующее значение), объединенный DataFrame в этой позиции также имеет NaN, потому что Pandas не может сравнить значение с отсутствующим значением.

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

combined_df = df1.combine(df2, np.maximum, fill_value=0)

В df1 есть два значения NaN, которые заполняются 0, а затем сравниваются со значениями в той же позиции df2.

2. комбинировать_сначала

Функция combine_first обновляет значения NaN значениями в той же позиции другого фрейма данных.

combined_df = df1.combine_first(df2)

Как мы видим на скриншоте выше, combined_df имеет те же значения, что и df1, за исключением значений NaN, которые заполнены значениями из df2.

Важно отметить, что функция combine_first не обновляет значения в df1 и df2. Он возвращает только обновленную версию первого DataFrame.

3. обновить

Функция update обновляет отсутствующее значение в DataFrame, используя значения в том же месте другого DataFrame.

Звучит так же, как функция combine_first. Однако есть важное отличие.

Функция update не возвращает ничего, кроме обновлений на месте. Таким образом, исходный DataFrame модифицируется (или обновляется). На примере будет понятнее.

У нас есть два DataFrames, как показано ниже:

Давайте используем функцию update для df1.

df1.update(df2)

Эта строка кода ничего не возвращает, но обновляет df1. Обновленная версия:

df1 больше не включает отсутствующие значения, которые были обновлены с использованием значений из df2.

4. сравнить

Функция compare сравнивает значения в одном и том же месте и возвращает DataFrame, показывающий их рядом друг с другом.

comparison = df1.compare(df2)

Если значения в определенном месте одинаковы, сравнение показывает их как NaN (например, вторая строка, первый столбец). Мы можем изменить это поведение, используя параметр keep_equal.

comparison = df1.compare(df2, keep_equal=True)

Заключение

Мы изучили четыре разные функции Pandas, которые выполняют поэлементное сравнение значений в двух кадрах данных. Все они имеют разные цели. Некоторые используются для обновления значений, тогда как некоторые просто выполняют сравнение.

Будут случаи, когда конкретная из этих функций подходит для использования. Поэтому лучше познакомиться со всеми.

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

Спасибо за чтение. Пожалуйста, дайте мне знать, если у вас есть какие-либо отзывы.