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 SpalteCOUNTRYsollte zucarshinzugefügt werden, die den jeweiligen Ländernamen in Großbuchstaben enthält. - Wie immer kannst du
carsausgeben, um die Früchte deiner Arbeit zu sehen.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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()