Pandas DataFrames sind ein Eckpfeiler der Datenmanipulation in Python. Häufig müssen einzelne Zellen innerhalb Ihres DataFrames geändert werden. Dieser Artikel untersucht drei effiziente Methoden, um dies mithilfe des Index des DataFrames zu erreichen.
Inhaltsverzeichnis
Zellenwerte setzen mit .at
Der .at
-Accessor bietet eine sehr effiziente Möglichkeit, eine einzelne Zelle in einem DataFrame anhand ihrer Zeilen- und Spaltenbezeichnungen zuzugreifen und zu ändern. Seine Geschwindigkeit macht ihn ideal für Zuweisungen einzelner Werte.
import pandas as pd
# Beispiel DataFrame
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6]}
df = pd.DataFrame(data, index=['A', 'B', 'C'])
# Setzt den Wert der Zelle in Zeile 'B' und Spalte 'col1' auf 10
df.at['B', 'col1'] = 10
print(df)
Dies gibt aus:
col1 col2
A 1 4
B 10 5
C 3 6
.at
ist auf Geschwindigkeit und Einfachheit optimiert, wenn es um einzelne Zellen geht. Der Versuch, mehrere Werte zuzuweisen, führt jedoch zu einem TypeError
.
Zellenwerte setzen mit .loc
Der .loc
-Accessor bietet mehr Flexibilität. Er ermöglicht die labelbasierte Indizierung für Zeilen und Spalten und kann die Zuweisung einzelner Werte oder Arrays an mehrere Zellen gleichzeitig verarbeiten.
import pandas as pd
# Beispiel DataFrame
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6]}
df = pd.DataFrame(data, index=['A', 'B', 'C'])
# Setzt den Wert der Zelle in Zeile 'A' und Spalte 'col2' auf 100
df.loc['A', 'col2'] = 100
print(df)
# Setzt mehrere Werte
df.loc[['A', 'B'], 'col1'] = [5, 15] #Weist 5 A und 15 B zu
print(df)
Dies gibt zuerst aus:
col1 col2
A 1 100
B 2 5
C 3 6
Und dann:
col1 col2
A 5 100
B 15 5
C 3 6
.loc
ist die vielseitigste Methode und eignet sich sowohl für Einzelzellenaktualisierungen als auch für komplexere Szenarien mit mehreren Zeilen und Spalten. Obwohl vielseitig, ist .at
für Einzelzellenänderungen in der Regel schneller.
Die veraltete Methode .set_value()
Die Methode .set_value()
ist in neueren Pandas-Versionen veraltet. Obwohl sie in älteren Versionen möglicherweise noch funktioniert, wird die Verwendung von .at
oder .loc
für bessere Kompatibilität und Leistung dringend empfohlen. Vermeiden Sie die Verwendung von .set_value()
in neuem Code.
Zusammenfassend bieten sowohl .at
als auch .loc
effektive Möglichkeiten, einzelne Zellen in einem Pandas DataFrame zu ändern. Bevorzugen Sie .at
wegen seiner Geschwindigkeit und Einfachheit bei einzelnen Werten und .loc
wegen seiner Flexibilität bei der Arbeit mit mehreren Zellen oder komplexeren Modifikationen.