Pandy: jak porównać dwie ramki danych wiersz po wierszu


Możesz użyć następujących metod, aby porównać dwie ramki danych pand wiersz po wierszu:

Metoda 1: Porównaj ramki danych i zachowaj tylko wiersze z różnicami

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

Metoda 2: Porównaj ramki danych i zachowaj wszystkie wiersze

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

Poniższe przykłady pokazują, jak używać każdej metody z następującymi ramkami danych pand:

 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

Przykład 1: Porównaj ramki danych i zachowaj tylko wiersze z różnicami

Poniższy kod pokazuje, jak porównać dwie ramki danych wiersz po wierszu i zachować tylko te wiersze, które różnią się w co najmniej jednej kolumnie:

 #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

Widzimy, że ramki danych mają dwa różne wiersze.

W szczególności widzimy, że wiersze na pozycjach indeksu 1 i 3 każdej ramki DataFrame mają różne wartości w co najmniej jednej kolumnie.

Wartości w linii własnej wyświetlają wartości pierwszej ramki DataFrame, natomiast wartości w drugiej linii wyświetlają wartości drugiej ramki DataFrame.

Na przykład możemy zobaczyć:

  • Wiersz na pozycji indeksu 1 pierwszej ramki danych zawiera B w kolumnie zespołu i 22 w kolumnie punktów.
  • Wiersz na pozycji indeksu 1 drugiej ramki danych zawiera B w kolumnie zespołu i 30 w kolumnie punktów.

Uwaga : Argument keep_equal=True mówi pandom, aby utrzymywały wartości równe. W przeciwnym razie równe wartości są wyświetlane jako NaN.

Przykład 2: Porównaj ramki danych i zachowaj wszystkie wiersze

Poniższy kod pokazuje, jak używać argumentu keep_shape=True do porównywania dwóch ramek danych wiersz po wierszu i zachowywania wszystkich wierszy z oryginalnych ramek danych:

 #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

Wynikowa ramka DataFrame zawiera wszystkie wiersze i kolumny oryginalnych ramek DataFrame.

Uwaga nr 1 : Funkcja Compare() zakłada, że dwie ramki danych mają te same wymiary.

Uwaga nr 2: Pełną dokumentację funkcji panda Compare() można znaleźć tutaj .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w pandach:

Pandy: jak porównać dwie kolumny
Pandy: jak porównać trzy kolumny
Pandy: jak porównać kolumny w dwóch różnych ramkach danych

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *