Spalte hinzufügen (2)
iterrows()
zu verwenden, um über jede Beobachtung eines Pandas DataFrame zu iterieren, 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 möchtest, indem du eine Funktion für eine andere Spalte aufrufst, ist die Methode iterrows()
in Kombination mit einer for
Schleife nicht der beste Weg. Stattdessen solltest du apply()
verwenden.
Vergleiche die Version iterrows()
mit der Version apply()
, um das gleiche Ergebnis im DataFrame brics
zu 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 Methode upper()
für jeden Namen in der Spalte country
aufzurufen. Aber upper()
ist 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 zum Anfassen
Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.
# 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()