Funkcia Python pandas DataFrame.where() je navrhnutá tak, aby pomáhala s podmienenou manipuláciou s údajmi v DataFrames. Umožňuje programátorom nahradiť alebo zamaskovať hodnoty v pandas DataFrame na základe podmienky.

Aká je syntax pre pandas DataFrame.where()?

Funkcia where() môže prijať až päť parametrov a má nasledujúcu syntax:

DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None)
python

Pri použití na DataFrame zostanú nezmenené len hodnoty, ktoré spĺňajú špecifikovanú podmienku (cond). Všetky ostatné hodnoty budú nahradené hodnotami, ktoré špecifikujete v parametri other.

Aké parametre možno použiť s pandas DataFrame.where()?

Pandas DataFrame.where() akceptuje rôzne parametre, ktoré uľahčujú flexibilnú správu a úpravu údajov:

Parameter Popis Predvolená hodnota
cond Podmienka, ktorá musí byť splnená, aby hodnoty DataFrame zostali nezmenené
other Hodnota, ktorá nahrádza hodnoty, ktoré nespĺňajú podmienku
inplace Ak je nastavená na True, operácia priamo upraví DataFrame. False
axis Určuje, na ktorú os sa podmienka vzťahuje (axis=0 pre riadky, axis=1 pre stĺpce) None
level Definuje úroveň multi-indexu, na ktorú sa má podmienka vzťahovať. None

Ako používať pandas DataFrame.where()

Funkcia where() môže byť užitočná v rôznych scenároch, ktoré vyžadujú podmienenú manipuláciu s údajmi. Môže to zahŕňať čistenie údajov alebo vytváranie nových stĺpcov na základe podmienok.

Nahradenie hodnôt na základe podmienok

Predpokladajme, že máte DataFrame s výsledkami predaja spoločnosti a chcete zobraziť len kladné výsledky. Záporné výsledky by mali byť nahradené hodnotou 0. To môžete urobiť pomocou pandas DataFrame.where(). Najskôr vytvoríme DataFrame:

import pandas as pd
# Create a sample DataFrame
data = {
    'Region': ['North', 'South', 'East', 'West'],
    'Sales_Q1': [15000, -5000, 3000, -1000],
    'Sales_Q2': [20000, 25000, -7000, 5000]
}
df = pd.DataFrame(data)
print(df)
python

Vyššie uvedený kód vytvorí nasledujúci DataFrame:

Region    Sales_Q1    Sales_Q2
0    North         15000         20000
1    South         -5000         25000
2     East            3000         -7000
3     West         -1000            5000

Pomocou where() môžete nahradiť všetky záporné hodnoty hodnotou 0. Uistite sa, že sú zahrnuté len stĺpce s číselnými hodnotami, inak to nebude fungovať.

# Replacing values using conditions
df_positive = df.copy()
df_positive[['Sales_Q1', 'Sales_Q2']] = df[['Sales_Q1', 'Sales_Q2']].where(df[['Sales_Q1', 'Sales_Q2']] > 0, 0)
print(df_positive)
python

Výsledný DataFrame, df_positive, zobrazuje iba kladné výsledky predaja a nahradzuje záporné hodnoty hodnotou 0:

Region    Sales_Q1    Sales_Q2
0    North         15000         20000
1    South                 0         25000
2     East            3000                 0
3     West                 0            5000

Maskovanie hodnôt pomocou podmienok

Pandas DataFrame.where() možno použiť aj na maskovanie hodnôt. To znamená, že sa zobrazia len určité časti DataFrame. V nasledujúcom príklade chceme zobraziť len hodnoty, ktoré presahujú určitú hranicu (v tomto prípade 10000). Nezabudnite, že musíte skontrolovať, či vyhodnocujete len stĺpce s číselnými údajmi:

# Only display values over 10000
df_masked = df.copy()
df_masked[['Sales_Q1', 'Sales_Q2']] = df[['Sales_Q1', 'Sales_Q2']].where(df[['Sales_Q1', 'Sales_Q2']] > 10000)
print(df_masked)
python

Výsledný DataFrame, df_masked, zobrazuje iba hodnoty, ktoré sú väčšie ako 10000. NaN sa používa namiesto všetkých ostatných hodnôt:

Region    Sales_Q1    Sales_Q2
0    North     15000.0     20000.0
1    South             NaN     25000.0
2     East             NaN             NaN
3     West             NaN             NaN
Prejsť na hlavné menu