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