Sådan søger du i DataFrames ved hjælp af pandas isin()
Python -funktionen pandas DataFrame.isin() er designet til hurtigt og effektivt at kontrollere , om bestemte værdier findes i en DataFrame. Denne funktion er især nyttig til at kontrollere flere værdier på én gang.
Hvad er syntaksen for pandas isin()?
Pandas isin() tager én parameter og ser sådan ud:
DataFrame.isin(values)pythonParameteren values kan være en Python-liste, en Python-ordbog eller en anden DataFrame. Den indeholder de værdier, du vil søge efter i DataFrame.
Hvis du arbejder med pandas Series i stedet for DataFrames, kan du bruge den tilsvarende funktion Series.isin().
Sådan bruges isin() med DataFrames i pandas
Du kan bruge isin() til forskellige formål. Ud over at kontrollere værdier kan det også bruges til at filtrere DataFrames.
Kontrol af værdier i en kolonne
Lad os først se på en DataFrame, der indeholder oplysninger om forskellige personer og hvor de bor.
import pandas as pd
# Creating a DataFrame
data = {
'Name': ['Amir', 'Bella', 'Charlize', 'David'],
'City': ['Nottingham', 'London', 'Cardiff', 'Hull']
}
df = pd.DataFrame(data)
print(df)pythonDataFrame ser således ud:
Name City
0 Amir Nottingham
1 Bella London
2 Charlize Cardiff
3 David HullNu vil vi bruge pandas isin() til at kontrollere, om byerne i kolonnen City forekommer i en separat liste over byer, vi har oprettet. Når vi har oprettet listen med referencebyerne, kører vi funktionen på DataFrame-kolonnen ‘City’:
# Cities for the list to be compared to
cities_to_check_against = ['Cardiff', 'Hull', 'Middlesbrough']
# Using the isin() method
result = df['City'].isin(cities_to_check_against)
print(result)pythonResultatet er en række boolske værdier, der angiver, om hver by i kolonnen By er til stede på listen cities_to_check_against:
0 False
1 False
2 True
3 True
Name: City, dtype: boolFiltrering af en DataFrame ved hjælp af isin()
Du kan også bruge pandas isin() til at filtrere en DataFrame, så kun de rækker med byer, der er på cities_to_check_against, bevares.
# Filtering a DataFrame using isin()
filtered_df = df[df['City'].isin(cities_to_check_against)]
print(filtered_df)pythonResultatet er en DataFrame, der kun indeholder de rækker med byer, der også er på listen cities_to_check_against:
Name City
2 Charlize Cardiff
3 David HullKontrol af flere kolonner i en DataFrame
Til mere komplekse filtreringsoperationer kan du også bruge pandas isin() med ordbøger. I det følgende eksempel kan du se, hvordan du kan bruge en ordbog til samtidig at kontrollere flere kolonner i en DataFrame. Først tilføjer vi en kolonne til den oprindelige DataFrame og bruger derefter isin():
# Creating a DataFrame
data = {
'Name': ['Amir', 'Bella', 'Charlize', 'David'],
'City': ['Nottingham', 'London', 'Cardiff', 'Hull'],
'Age': [25, 30, 35, 40]
}
df = pd.DataFrame(data)
# Dictionary with values that the DataFrame should be checked against
values_to_check_against = {
'City': ['Cardiff', 'Hull'],
'Age': [30, 40]
}
# Using isin() with a dictionary
result = df.isin(values_to_check_against)
print(result)pythonI dette tilfælde returnerer kaldet isin() en DataFrame med boolske værdier, der angiver, om betingelserne er opfyldt i hver kolonne:
Name City Age
0 False False False
1 False False True
2 False True False
3 False True True