Dodawanie kolumny (2)
Iterowanie po obserwacjach DataFrame'a Pandas za pomocą iterrows() jest łatwe do zrozumienia, ale niezbyt wydajne. Przy każdej iteracji tworzysz nową serię Pandas.
Jeśli chcesz dodać kolumnę do DataFrame'a, wywołując funkcję na innej kolumnie, metoda iterrows() w połączeniu z pętlą for nie jest najlepszym rozwiązaniem. Zamiast tego warto użyć apply().
Porównaj wersję z iterrows() i wersję z apply(), które dają ten sam wynik w DataFrame brics:
for lab, row in brics.iterrows() :
brics.loc[lab, "name_length"] = len(row["country"])
brics["name_length"] = brics["country"].apply(len)
Podobną technikę można zastosować, by wywołać metodę upper() na każdej nazwie w kolumnie country. Ponieważ upper() jest metodą, podejście będzie nieco inne:
To ćwiczenie jest częścią kursu
Python średnio zaawansowany
Instrukcje do ćwiczenia
- Zastąp pętlę
forjednolinijkowym wyrażeniem używającym.apply(str.upper). Wynik powinien być taki sam: docarszostanie dodana kolumnaCOUNTRYzawierająca nazwy krajów zapisane wielkimi literami. - Jak zwykle, wyświetl
cars, żeby zobaczyć efekty swojej pracy.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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()