Pandy: sprawdź, czy wiersz z jednej ramki dataframe istnieje w innej


Możesz użyć następującej składni, aby dodać nową kolumnę do ramki danych pandas, która wskazuje, czy każdy wiersz istnieje w innej ramce danych:

 #merge two DataFrames on specific columns
all_df = pd. merge (df1, df2, on=[' column1 ', ' column2 '], how=' left ', indicator=' exists ')

#drop unwanted columns
all_df = all_df. drop (' column3 ', axis= 1 )

#add column that shows if each row in one DataFrame exists in another
all_df[' exists '] = np. where (all_df. exists == ' both ', True , False )

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Przykład: sprawdź, czy wiersz w jednej ramce danych Pandas istnieje w innej

Załóżmy, że mamy następujące dwie ramki danych pandy:

 import pandas as pd

#create first DataFrame
df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E'], 
                    ' points ': [12, 15, 22, 29, 24]}) 

print (df1)

  team points
0 to 12
1 B 15
2 C 22
3 D 29
4 E 24

#create second DataFrame
df2 = pd. DataFrame ({' team ': ['A', 'D', 'F', 'G', 'H'],
                    ' points ': [12, 29, 15, 19, 10],
                    ' assists ': [4, 7, 7, 10, 12]})

print (df2)

  team points assists
0 to 12 4
1 D 29 7
2 F 15 7
3 G 19 10
4:10:12

Możemy użyć następującej składni, aby dodać kolumnę o nazwie istnieje do pierwszej ramki danych, która wskazuje, czy każda wartość w kolumnie zespołu i punktów w każdym wierszu istnieje w drugiej ramce danych:

 import numpy as np

#merge two dataFrames and add indicator column
all_df = pd. merge (df1, df2, on=[' team ', ' points '], how=' left ', indicator=' exists ')

#drop assists columns
all_df = all_df. drop (' assists ', axis= 1 )

#add column to show if each row in first DataFrame exists in second
all_df[' exists '] = np. where (all_df. exists == ' both ', True , False )

#view updated DataFrame
print (all_df)

  team points exists
0 A 12 True
1 B 15 False
2 C 22 False
3 D 29 True
4 E 24 False

Nowa kolumna istnieje wskazuje, czy każda wartość w kolumnie zespołu i punktów w każdym wierszu istnieje w drugiej ramce danych.

Z wyniku możemy zobaczyć:

  • W drugiej ramce danych istnieje wartość zespołowa A i wartość punktowa 12 .
  • Wartość zespołu B i wartość punktów 15 nie istnieją w drugiej ramce danych.
  • Wartość zespołu C i wartość punktów 22 nie istnieją w drugiej ramce DataFrame.
  • W drugiej ramce danych istnieje wartość zespołowa D i wartość punktowa 29 .
  • Wartość zespołu E i wartość punktów 24 nie istnieją w drugiej ramce DataFrame.

Pamiętaj też, że możesz określić wartości inne niż True i False w istniejącej kolumnie, zmieniając wartości w funkcji NumPy Where() .

Na przykład możesz zamiast tego użyć słów „istnieje” i „nie istnieje” w następujący sposób:

 #add column to show if each row in first DataFrame exists in second
all_df[' exists '] = np. where (all_df. exists == ' both ', ' exists ', ' not exists ')

#view updated DataFrame
print (all_df)

  team points exists
0 to 12 exists
1 B 15 not exists
2 C 22 not exists
3 D 29 exists
4 E 24 not exists

Należy pamiętać, że wartości w istniejącej kolumnie zostały zmienione.

Dodatkowe zasoby

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

Pandy: dodaj kolumnę z jednej ramki DataFrame do drugiej
Pandy: Uzyskaj wiersze, których nie ma w innej ramce DataFrame
Pandy: jak sprawdzić, czy wiele kolumn jest równych

Dodaj komentarz

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