Spalte hinzufügen (2)
Das Durchlaufen aller Zeilen in einem pandas-DataFrame mit iterrows()
ist einfach zu verstehen, aber nicht sehr effizient. Bei jeder Iteration erstellst du eine neue pandas-Series.
Wenn du eine Spalte zu einem DataFrame hinzufügen willst, indem du eine Funktion für eine andere Spalte aufrufst, ist die iterrows()
-Methode in Kombination mit einer for
-Schleife nicht der beste Weg. Stattdessen solltest du apply()
verwenden.
Vergleiche die iterrows()
-Version mit der apply()
-Version, die beide dasselbe Ergebnis mit dem DataFrame brics
erhalten:
for lab, row in brics.iterrows() :
brics.loc[lab, "name_length"] = len(row["country"])
brics["name_length"] = brics["country"].apply(len)
Wir können ähnlich vorgehen, um die upper()
-Methode für jeden Namen in der Spalte country
aufzurufen. Allerdings ist upper()
eine Methode, also brauchen wir einen etwas anderen Ansatz:
Diese Übung ist Teil des Kurses
Python für Fortgeschrittene
Anleitung zur Übung
- Ersetze die
for
-Schleife durch einen Einzeiler, der.apply(str.upper)
verwendet. Der Aufruf sollte dasselbe Ergebnis liefern: Eine SpalteCOUNTRY
sollte zucars
hinzugefügt werden, die den jeweiligen Ländernamen in Großbuchstaben enthält. - Wie immer kannst du
cars
ausgeben, um die Früchte deiner Arbeit zu sehen.
Interaktive Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# 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()