Pandas DataFrames sind essentiell für die Datenmanipulation in Python. Der effiziente Zugriff auf einzelne Zellenwerte ist eine häufige Aufgabe. Dieser Artikel untersucht verschiedene Methoden zum Abrufen dieser Werte und hebt deren Stärken und Schwächen hervor.
Inhaltsverzeichnis
- Integer-basierte Indizierung:
iloc
iat
undat
für den Einzelzellen-Zugriff- Zugriff über Spalte und Index:
df['col_name'].iloc[]
Integer-basierte Indizierung: iloc
.iloc
bietet eine vielseitige, integer-basierte Indizierung. Es verwendet eine nullbasierte Indizierung für sowohl Zeilen als auch Spalten.
import pandas as pd
data = {'col1': [10, 20, 30], 'col2': [40, 50, 60]}
df = pd.DataFrame(data)
# Zugriff auf den Wert in Zeile 1, Spalte 0 (zweite Zeile, erste Spalte)
value = df.iloc[1, 0]
print(f"Wert mit iloc: {value}") # Ausgabe: 20
# Zugriff auf den Wert in Zeile 0, Spalte 1 (erste Zeile, zweite Spalte)
value = df.iloc[0, 1]
print(f"Wert mit iloc: {value}") # Ausgabe: 40
.iloc
ist effizient, besonders für große DataFrames, und bietet präzise Kontrolle über die Zellenauswahl mittels numerischer Indizes.
iat
und at
für den Einzelzellen-Zugriff
.iat
und .at
bieten einen prägnanten Einzelzellen-Zugriff. .iat
verwendet integer-basierte Indizierung, während .at
label-basierte Indizierung (Spaltennamen) verwendet.
import pandas as pd
data = {'col1': [10, 20, 30], 'col2': [40, 50, 60]}
df = pd.DataFrame(data)
# Wert in Zeile 1, Spalte 0 mit iat erhalten
value = df.iat[1, 0]
print(f"Wert mit iat: {value}") # Ausgabe: 20
# Wert in Zeile 0, Spalte 'col2' mit at erhalten
value = df.at[0, 'col2']
print(f"Wert mit at: {value}") # Ausgabe: 40
Diese Methoden sind schneller für den Einzelzellen-Zugriff als .iloc
, da sie einen skalaren Wert zurückgeben, keine Series oder DataFrame.
Zugriff über Spalte und Index: df['col_name'].iloc[]
Dieser Ansatz wählt zuerst eine Spalte aus und greift dann auf eine bestimmte Zeile innerhalb des zugrundeliegenden NumPy-Arrays dieser Spalte zu. Er ist weniger flexibel und effizient als die vorherigen Methoden.
import pandas as pd
data = {'col1': [10, 20, 30], 'col2': [40, 50, 60]}
df = pd.DataFrame(data)
# Zugriff auf den Wert in Zeile 1 von 'col1'
value = df['col1'].iloc[1] #Effizienter als .values[]
print(f"Wert mit iloc auf Spalte: {value}") # Ausgabe: 20
Obwohl dies bequem erscheint, wird die direkte Verwendung von .iloc
bei der Spaltenauswahl im Allgemeinen wegen der Effizienz und Klarheit bevorzugt.
Zusammenfassend bieten .iloc
, .iat
und .at
effiziente und lesbare Möglichkeiten, auf DataFrame-Zellen zuzugreifen. Der spaltenbasierte Ansatz mit .iloc
auf der ausgewählten Spalte wird im Allgemeinen gegenüber der Verwendung von .values[]
bevorzugt. Wählen Sie die Methode, die am besten zu Ihren Bedürfnissen und Ihrem Codierungsstil passt.