Pandas vs. loc: was ist der unterschied?
Wenn es darum geht, Zeilen und Spalten eines Pandas-DataFrames auszuwählen, sind .loc und .at zwei häufig verwendete Funktionen.
Hier ist der subtile Unterschied zwischen den beiden Funktionen:
- .loc kann mehrere Zeilen und Spalten als Eingabeargumente verwenden
- .at kann nur eine einzelne Zeile und Spalte als Eingabeargumente verwenden
Die folgenden Beispiele zeigen, wie jede Funktion in der Praxis mit dem folgenden Pandas DataFrame verwendet wird:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'], ' points ': [18, 22, 19, 14, 14, 11, 20, 28], ' assists ': [5, 7, 7, 9, 12, 9, 9, 4], ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]}) #view DataFrame print (df) team points assists rebounds 0 A 18 5 11 1 B 22 7 8 2 C 19 7 10 3 D 14 9 6 4 E 14 12 6 5 F 11 9 5 6 G 20 9 9 7:28 4 12
Beispiel 1: Verwendung von loc in Pandas
Der folgende Code zeigt, wie Sie mit .loc auf den Wert im DataFrame zugreifen, der sich an der Indexposition 0 der Punktspalte befindet:
#select value located at index position 0 of the points column
df. loc [0, ' points ']
18
Dies gibt einen Wert von 18 zurück.
Und der folgende Code zeigt, wie man mit .loc auf Zeilen zwischen den Indexwerten 0 und 4 sowie auf Points- und Assists-Spalten zugreift:
#select rows between index values 0 and 4 and columns 'points' and 'assists'
df. loc [0:4, [' points ', ' assists ']]
assist points
0 18 5
1 22 7
2 19 7
3 14 9
4 14 12
Unabhängig davon, ob wir auf einen einzelnen Wert oder auf eine Gruppe von Zeilen und Spalten zugreifen möchten, kann die Funktion .loc beides tun.
Beispiel 2: Verwendung von at in Pandas
Der folgende Code zeigt, wie man mit .at auf den Wert im DataFrame zugreift, der sich an Indexposition 0 der Punktspalte befindet:
#select value located at index position 0 of the points column
df. at [0, ' points ']
18
Dies gibt einen Wert von 18 zurück.
Nehmen wir jedoch an, wir versuchen, at zu verwenden, um auf die Zeilen zwischen den Indexwerten 0 und 4 sowie auf die Punkte- und Assists-Spalten zuzugreifen:
#try to select rows between index values 0 and 4 and columns 'points' and 'assists'
df. at [0:4, [' points ', ' assists ']]
TypeError : unhashable type: 'list'
Wir erhalten eine Fehlermeldung, weil die at- Funktion nicht in der Lage ist, mehrere Zeilen oder Spalten als Eingabeargumente zu verwenden.
Abschluss
Wenn Sie auf einen einzelnen Wert in einem Pandas-DataFrame zugreifen möchten, funktionieren die Funktionen „loc “ und „ at“ einwandfrei.
Wenn Sie jedoch auf eine Gruppe von Zeilen und Spalten zugreifen möchten, ist dies nur mit der Loc- Funktion möglich.
Verwandte Themen: Pandas loc vs. iloc: Was ist der Unterschied?
Zusätzliche Ressourcen
In den folgenden Tutorials wird erläutert, wie andere gängige Vorgänge in Pandas ausgeführt werden:
So wählen Sie mit Pandas Loc Zeilen basierend auf mehreren Bedingungen aus
So wählen Sie Zeilen basierend auf Spaltenwerten in Pandas aus
So wählen Sie Zeilen nach Index in Pandas aus