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)
python

Parametr values může být seznam Python, slovník Python nebo jiný DataFrame. Obsahuje hodnoty, které chcete vyhledat v DataFrame.

Tip

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)
python

DataFrame vypadá takto:

Name      City
0    Amir    	Nottingham
1    Bella  	London
2    Charlize   Cardiff
3    David    Hull

Nyní 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)
python

Vý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: bool

Filtrová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)
python

Vý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  		Hull

Kontrola 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)
python

V 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
Přejít do hlavního menu