Hvordan søke i DataFrames ved hjelp av pandas isin()
Python pandas- funksjonen DataFrame.isin() er utviklet for å raskt og effektivt sjekke om visse verdier finnes i en DataFrame. Denne funksjonen er spesielt nyttig for å sjekke flere verdier samtidig.
Hva er syntaksen for pandas isin()?
Pandas isin() tar én parameter og ser slik ut:
DataFrame.isin(values)pythonParameteren values kan være en Python-liste, en Python-ordbok eller en annen DataFrame. Den inneholder verdiene du ønsker å søke etter i DataFrame.
Hvis du arbeider med pandas Series i stedet for DataFrames, kan du bruke den tilsvarende funksjonen Series.isin().
Hvordan bruke isin() med DataFrames i pandas
Du kan bruke isin() til forskjellige formål. I tillegg til å sjekke verdier, kan det også brukes til å filtrere DataFrames.
Sjekke verdier i en kolonne
Først skal vi se på en DataFrame som inneholder informasjon om forskjellige 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 slik ut:
Name City
0 Amir Nottingham
1 Bella London
2 Charlize Cardiff
3 David HullNå vil vi bruke pandas isin() til å sjekke om byene i kolonnen City finnes i en egen liste over byer som vi har opprettet. Når vi har opprettet listen med referansebyene, kjører vi funksjonen 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 serie med boolske verdier som angir om hver by i kolonnen By er til stede i listen cities_to_check_against:
0 False
1 False
2 True
3 True
Name: City, dtype: boolFiltrering av en DataFrame ved hjelp av isin()
Du kan også bruke pandas isin() til å filtrere en DataFrame, slik at du bare beholder radene med byer som finnes på listen cities_to_check_against.
# Filtering a DataFrame using isin()
filtered_df = df[df['City'].isin(cities_to_check_against)]
print(filtered_df)pythonResultatet er en DataFrame som bare inneholder rader med byer som også er på listen cities_to_check_against:
Name City
2 Charlize Cardiff
3 David HullKontrollere flere kolonner i en DataFrame
For mer komplekse filtreringsoperasjoner kan du også bruke pandas isin() med ordbøker. I det følgende eksemplet vil du se hvordan du kan bruke en ordbok til å sjekke flere kolonner i en DataFrame samtidig. Først legger vi til en kolonne i den opprinnelige DataFrame og bruker deretter 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 tilfellet returnerer isin() en DataFrame med boolske verdier, som angir om betingelsene er oppfylt i hver kolonne:
Name City Age
0 False False False
1 False False True
2 False True False
3 False True True