Hur man söker i DataFrames med pandas isin()
Python -funktionen pandas DataFrame.isin() är utformad för att snabbt och effektivt kontrollera om vissa värden finns i en DataFrame. Denna funktion är särskilt användbar för att kontrollera flera värden samtidigt.
Vad är syntaxen för pandas isin()?
Pandas isin() tar en parameter och ser ut så här:
DataFrame.isin(values)pythonParametern values kan vara en Python-lista, en Python-ordbok eller en annan DataFrame. Den innehåller de värden du vill söka efter i DataFrame.
Om du arbetar med pandas Series istället för DataFrames kan du använda motsvarande funktion Series.isin().
Hur man använder isin() med DataFrames i pandas
Du kan använda isin() för olika ändamål. Förutom att kontrollera värden kan det också användas för att filtrera DataFrames.
Kontrollera värden i en kolumn
Låt oss först titta på en DataFrame som innehåller information om olika personer och var 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 ut så här:
Name City
0 Amir Nottingham
1 Bella London
2 Charlize Cardiff
3 David HullNu vill vi använda pandas isin() för att kontrollera om städerna i kolumnen City förekommer i en separat lista med städer som vi har skapat. När vi har skapat listan med referensstäderna kör vi funktionen på DataFrame-kolumnen ”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 är en serie booleska värden som anger om varje stad i kolumnen Stad finns med i listan cities_to_check_against:
0 False
1 False
2 True
3 True
Name: City, dtype: boolFiltrera en DataFrame med hjälp av isin()
Du kan också använda pandas isin() för att filtrera en DataFrame och behålla endast raderna med städer som finns med i cities_to_check_against.
# Filtering a DataFrame using isin()
filtered_df = df[df['City'].isin(cities_to_check_against)]
print(filtered_df)pythonResultatet är en DataFrame som endast innehåller rader med städer som också finns med i listan cities_to_check_against:
Name City
2 Charlize Cardiff
3 David HullKontrollera flera kolumner i en DataFrame
För mer komplexa filtreringsoperationer kan du också använda pandas isin() med ordböcker. I följande exempel ser du hur du kan använda en ordbok för att samtidigt kontrollera flera kolumner i en DataFrame. Först lägger vi till en kolumn i den ursprungliga DataFrame och använder sedan 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 det här fallet returnerar anropet isin() en DataFrame med booleska värden, som anger om villkoren har uppfyllts i varje kolumn:
Name City Age
0 False False False
1 False False True
2 False True False
3 False True True