Funkcia Python pandas DataFrame.isin() je navrhnutá tak, aby rýchlo a efektívne skontrolovala, či určité hodnoty existujú v DataFrame. Táto funkcia je obzvlášť užitočná na kontrolu viacerých hodnôt naraz.

Aká je syntax pre pandas isin()?

Pandas isin() prijíma jeden parameter a vyzerá takto:

DataFrame.isin(values)
python

Parameter values môže byť zoznam Python, slovník Python alebo iný DataFrame. Obsahuje hodnoty, ktoré chcete vyhľadávať v DataFrame.

Tip

Ak pracujete s pandas Series namiesto DataFrames, môžete použiť ekvivalentnú funkciu Series.isin().

Ako používať isin() s DataFrames v pandas

isin() môžete použiť na rôzne účely. Okrem kontroly hodnôt ho môžete použiť aj na filtrovanie dátových rámcov.

Kontrola hodnôt v stĺpci

Najskôr sa pozrime na DataFrame, ktorý obsahuje informácie o rôznych ľuďoch a mieste, 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 vyzerá takto:

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

Teraz chceme pomocou pandas isin() skontrolovať, či sa mestá v stĺpci City nachádzajú v samostatnom zozname miest, ktorý sme vytvorili. Akonáhle vytvoríme zoznam s referenčnými mestami, spustíme funkciu na stĺpci 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ýsledkom je séria boolovských hodnôt, ktoré udávajú, či je každé mesto v stĺpci Mesto prítomné v zozname cities_to_check_against:

0    False
1    False
2     True
3     True
Name: City, dtype: bool

Filtrovanie dátového rámca pomocou isin()

Na filtrovanie DataFrame môžete použiť aj pandas isin(), pričom zachováte len riadky s mestami, ktoré sa nachádzajú v zozname cities_to_check_against.

# Filtering a DataFrame using isin()
filtered_df = df[df['City'].isin(cities_to_check_against)]
print(filtered_df)
python

Výsledkom je DataFrame, ktorý obsahuje iba riadky s mestami, ktoré sú tiež v zozname cities_to_check_against:

Name    	City
2  Charlize  	Cardiff
3  David  		Hull

Kontrola viacerých stĺpcov v DataFrame

Pre zložitejšie operácie filtrovania môžete použiť aj pandas isin() so slovníkmi. V nasledujúcom príklade uvidíte, ako môžete pomocou slovníka súčasne skontrolovať viacero stĺpcov DataFrame. Najskôr pridáme stĺpec do pôvodného DataFrame a potom 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 prípade volanie isin() vráti DataFrame s boolovskými hodnotami, ktoré označujú, či boli podmienky splnené v každom stĺpci:

Name  City  Age
0  False  False  False
1  False  False   True
2  False   True  False
3  False   True   True
Prejsť na hlavné menu