Přidání sloupce (2)
Iterace přes každý řádek Pandas DataFrame pomocí iterrows() je snadno pochopitelná, ale ne příliš efektivní. Při každé iteraci se totiž vytváří nová Pandas Series.
Pokud chceš přidat sloupec do DataFrame tak, že zavoláš funkci na jiný sloupec, kombinace metody iterrows() s cyklem for není tím nejlepším řešením. Místo toho je lepší použít apply().
Porovnej verzi s iterrows() a verzi s apply(), které dávají stejný výsledek v DataFrame brics:
for lab, row in brics.iterrows() :
brics.loc[lab, "name_length"] = len(row["country"])
brics["name_length"] = brics["country"].apply(len)
Něco podobného můžeme udělat i pro volání metody upper() na každý název ve sloupci country. Protože upper() je ale metoda, budeme potřebovat trochu jiný přístup:
Toto cvičení je součástí kurzu
Intermediate Python
Pokyny k cvičení
- Nahraď cyklus
forjednořádkovým zápisem využívajícím.apply(str.upper). Výsledek by měl být stejný: docarsse přidá sloupecCOUNTRYobsahující názvy zemí převedené na velká písmena. - Jako obvykle vypiš
cars, abys viděl/a výsledky své práce.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# Import cars data
import pandas as pd
cars = pd.read_csv('cars.csv', index_col = 0)
# Use .apply(str.upper)
for lab, row in cars.iterrows() :
cars.loc[lab, "COUNTRY"] = row["country"].upper()