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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert