Pandas: как сравнить два dataframe построчно


Вы можете использовать следующие методы для сравнения двух кадров данных pandas построчно:

Способ 1: сравнить фреймы данных и сохранить только строки с различиями

 df_diff = df1. compare (df2, keep_equal= True , align_axis= 0 )

Способ 2: сравнить фреймы данных и сохранить все строки

 df_diff = df1. compare (df2, keep_equal= True , keep_shape= True , align_axis= 0 )

В следующих примерах показано, как использовать каждый метод со следующими кадрами данных pandas:

 import pandas as pd

#create first DataFrame
df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D'],
                    ' points ': [18, 22, 19, 14],
                    ' assists ': [5, 7, 7, 9]})

print (df1)

  team points assists
0 to 18 5
1 B 22 7
2 C 19 7
3 D 14 9

#create second DataFrame
df2 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'E'],
                    ' points ': [18, 30, 19, 20],
                    ' assists ': [5, 7, 7, 9]})

print (df2)

  team points assists
0 to 18 5
1 B 30 7
2 C 19 7
3 E 20 9

Пример 1. Сравните DataFrames и сохраните только строки с различиями.

Следующий код показывает, как сравнить два DataFrames построчно и сохранить только те строки, которые имеют различия хотя бы в одном столбце:

 #compare DataFrames and only keep rows with differences
df_diff = df1. compare (df2, keep_equal= True , align_axis= 0 )

#view results
print (df_diff)

        team points
1 coil B 22
  other B 30
3 choke D 14
  other E 20

Мы видим, что DataFrames имеет две разные строки.

В частности, мы видим, что строки в позициях индекса 1 и 3 каждого DataFrame имеют разные значения как минимум в одном столбце.

Значения в строке self отображают значения первого DataFrame, а значения в другой строке отображают значения второго DataFrame.

Например, мы можем увидеть:

  • Строка в индексной позиции 1 первого DataFrame содержит B в столбце команды и 22 в столбце очков.
  • Строка в индексной позиции 1 второго DataFrame содержит B в столбце команды и 30 в столбце очков.

Примечание . Аргумент Keep_equal=True указывает пандам сохранять значения равными. В противном случае равные значения отображаются как NaN.

Пример 2. Сравнить фреймы данных и сохранить все строки

В следующем коде показано, как использовать аргумент Keep_shape=True для сравнения двух DataFrames построчно и сохранения всех строк из исходных DataFrames:

 #compare DataFrames and keep all rows
df_diff = df1. compare (df2, keep_equal= True , keep_shape= True , align_axis= 0 )

#view results
print (df_diff)

        team points assists
0 choke A 18 5
  other A 18 5
1 coil B 22 7
  other B 30 7
2 choke C 19 7
  other C 19 7
3 choke D 14 9
  other E 20 9

Полученный DataFrame содержит все строки и столбцы исходных DataFrame.

Примечание № 1. Функция Compare() предполагает, что два DataFrame имеют одинаковые размеры.

Примечание №2: Полную документацию по функции сравнения() панд можно найти здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в pandas:

Панды: как сравнить два столбца
Панды: как сравнить три столбца
Pandas: как сравнить столбцы в двух разных DataFrames

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *