Jak vyhledávat DataFrames pomocí pandas isin()
Funkce Python pandas DataFrame.isin() je navržena tak, aby rychle a efektivně zkontrolovala, zda určité hodnoty existují v DataFrame. Tato funkce je zvláště užitečná pro kontrolu více hodnot najednou.
Jaká je syntaxe pro pandas isin()?
Pandas isin() přijímá jeden parametr a vypadá takto:
DataFrame.isin(values)pythonParametr values může být seznam Python, slovník Python nebo jiný DataFrame. Obsahuje hodnoty, které chcete vyhledat v DataFrame.
Pokud pracujete s pandas Series namísto DataFrames, můžete použít ekvivalentní funkci Series.isin().
Jak používat isin() s datovými rámci v pandas
isin() můžete použít k různým účelům. Kromě kontroly hodnot ji lze také použít k filtrování datových rámců.
Kontrola hodnot ve sloupci
Nejprve se podívejme na DataFrame, který obsahuje informace o různých lidech a místech, kde žijí.
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 vypadá takto:
Name City
0 Amir Nottingham
1 Bella London
2 Charlize Cardiff
3 David HullNyní chceme pomocí pandas isin() zkontrolovat, zda se města ve sloupci City objevují v samostatném seznamu měst, který jsme vytvořili. Jakmile vytvoříme seznam s referenčními městy, spustíme funkci na sloupci DataFrame „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)pythonVýsledkem je řada logických hodnot, které udávají, zda je každé město ve sloupci Město přítomno v seznamu cities_to_check_against:
0 False
1 False
2 True
3 True
Name: City, dtype: boolFiltrování datového rámce pomocí isin()
K filtrování datového rámce můžete také použít pandas isin(), čímž zachováte pouze řádky s městy, která se objevují v seznamu cities_to_check_against.
# Filtering a DataFrame using isin()
filtered_df = df[df['City'].isin(cities_to_check_against)]
print(filtered_df)pythonVýsledkem je DataFrame, který obsahuje pouze řádky s městy, která jsou také v seznamu cities_to_check_against:
Name City
2 Charlize Cardiff
3 David HullKontrola více sloupců v DataFrame
Pro složitější operace filtrování můžete také použít pandas isin() se slovníky. V následujícím příkladu uvidíte, jak můžete pomocí slovníku současně zkontrolovat více sloupců DataFrame. Nejprve přidáme sloupec do původního DataFrame a poté použijeme 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)pythonV tomto případě volání isin() vrátí DataFrame s booleovskými hodnotami, které označují, zda byly podmínky splněny v každém sloupci:
Name City Age
0 False False False
1 False False True
2 False True False
3 False True True