Как сравнить значения двух фреймов данных в Pandas

Бывают случаи, когда вы работаете с более чем одним Pandas DataFrames, и вам может потребоваться сравнить их значения. Давайте создадим два фрейма данных, а затем сравним значения. Создайте два фрейма данных с помощью словаря Python, а затем сравните их значения.

Шаг 1. Подготовьте два фрейма данных Pandas

Как мы обсуждали выше, мы создадим два кадра данных, используя словари.

См. следующий код.

Выход:

Сначала мы определили два словаря, а затем преобразовали эти словари в DataFrames с помощью функции pd.DataFrame(dict), и распечатали оба DataFrames.

В этом примере вы можете видеть, что Reliance Jio и Reliance имеют одинаковую цену и MRP, что равно 100. Другие значения, которые мы взяли, разные.

Шаг 2: Импорт пакета Numpy

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

После этого вам нужно импортировать numpy в проект, используя import numpy as np.

Шаг 3: Сравните значения df, используя метод np.where()

Давайте разберемся с синтаксисом сравнения значений.

Во-первых, нам нужно добавить новый столбец в DataFrame, который содержит результат сравнения. Значения столбца будут либо True, либо False в зависимости от результата сравнения. Если значения совпадают, то он вернет True, иначе False.

С правой стороны мы использовали функцию Python np.where(), которая принимает условие и значения, из которых можно выбирать. Мы передали эти значения как True и False.

Теперь давайте реализуем приведенную выше формулу для нашей программы и посмотрим на результат.

Выход:

Вы заметите, что новый столбец (т. е. столбец «matchPrice?») будет создан под первым фреймом кадром данных (т. е. dfA). Этот новый столбец будет содержать результаты сравнения на основе следующих правил:

  1. Если цена равна mrp, то присваиваем значение True.
  2. В противном случае присвойте значение False.

Цена Reliance Jio и Reliance одинакова; поэтому он возвращает True, а остальные значения — False.

Разница между dfA price и dfB mrp

Чтобы получить разницу между ценой и mrp в качестве четвертого столбца, вам нужно написать следующий синтаксис.

В этом синтаксисе мы пытаемся добиться того, что если значения price и mrp совпадают, то return 0 в противном случае возвращает результат вычитания цены — mrp.

Если значения DataFrame одинаковы, то вычитание будет равно 0, а если нет, то вывод вычитания будет либо 0, либо положительным, либо отрицательным в зависимости от значений.

Полный код смотрите здесь.

Выход:

На выходе мы получим отрицательные значения, потому что mrp выше price, поэтому вычитание будет отрицательным, и если оба одинаковы, то мы получим 0.

ValueError: можно сравнивать только объекты серии с одинаковыми метками

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

Если, например, один из DataFrame имеет 4 продукта, а другой DataFrame — 3 продукта, и вы пытаетесь запустить сравнение, вы получите следующую ошибку.

ValueError: можно сравнивать только объекты серии с одинаковыми метками.

См. следующий код.

Выход:

В приведенном выше примере вы можете видеть, что если один DataFrame имеет 4 строки, а другой — 3 строки, будет выдано ValueError.

Как сравнивать значения двух фреймов данных в Pandas

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

Оцените статью

Автор статей и разработчик, делюсь знаниями.

Программирование на Python