HOWTO · Pandas

So rufen Sie die erste Zeile eines Pandas-DataFrames ab

Lernen Sie, die erste Zeile eines Pandas DataFrame mit iloc, head(), Filtern, query(), take() und Slicing auszuwählen und zwischen einem Series- und einem DataFrame-Ergebnis zu wählen.

Auf dieser Seite

Verwenden Sie df.iloc[0], wenn Sie die erste Zeile als Series abrufen möchten, oder df.head(1), wenn das Ergebnis ein DataFrame mit einer Zeile bleiben soll. Sollen Sie die erste Zeile finden, die bestimmte Kriterien erfüllt, filtern Sie zuerst und wählen anschließend das erste Ergebnis aus.

Die Beispiele verwenden diesen kleinen DataFrame, damit die ausgewählten Werte und die ursprünglichen Zeilenindizes leicht nachvollziehbar sind. Jeder Codeblock ist in einer Python-Umgebung mit installiertem pandas eigenständig ausführbar; die nach jedem Beispiel gezeigte Ausgabe stammt aus dem bereitgestellten Laufzeittest.

Die erste Zeile eines Pandas-DataFrames mit der Eigenschaft pandas.DataFrame.iloc abrufen

pandas.DataFrame.iloc wählt Zeilen und Spalten anhand ihrer ganzzahligen Position aus. Position 0 bezeichnet unabhängig vom Indexlabel die erste Zeile. Wenn Sie mit df.iloc[0] eine Zeile auswählen, erhalten Sie eine Series, deren Index die Spaltennamen des DataFrames enthält. Mit df.iloc[0, 1] wählen Sie den einzelnen Wert an Zeilenposition 0 und Spaltenposition 1 aus.

import pandas as pd

df = pd.DataFrame(
    {
        "C_1": ["A", "B", "C", "D"],
        "C_2": [40, 34, 38, 45],
        "C_3": [430, 980, 200, 350],
    }
)

first_row = df.iloc[0]
print(first_row)
C_1      A
C_2     40
C_3    430
Name: 0, dtype: object

Wählen Sie diese Form, wenn eine Series für nachfolgende Berechnungen oder den Zugriff über Spaltennamen praktisch ist. Um die zweidimensionale DataFrame-Form beizubehalten, verwenden Sie df.iloc[[0]] oder eine der folgenden Methoden.

Die erste Zeile eines Pandas-DataFrames mit der Methode pandas.DataFrame.head() abrufen

pandas.DataFrame.head(n) gibt die ersten n Zeilen als DataFrame zurück. Übergeben Sie 1, um nur die erste Zeile zu erhalten und dabei die Spaltenstruktur sowie das Indexlabel beizubehalten. Diese Methode ist oft die klarste Wahl, wenn der nachfolgende Code einen DataFrame erwartet.

import pandas as pd

df = pd.DataFrame(
    {
        "C_1": ["A", "B", "C", "D"],
        "C_2": [40, 34, 38, 45],
        "C_3": [430, 980, 200, 350],
    }
)

first_row = df.head(1)
print(first_row)
  C_1  C_2  C_3
0   A   40  430

Entscheidend ist die Form des Ergebnisses: df.iloc[0] ist eindimensional, während df.head(1) weiterhin ein DataFrame ist.

Die erste Zeile eines Pandas-DataFrames anhand einer bestimmten Bedingung abrufen

Filtern Sie die Zeilen, bevor Sie den ersten Treffer auswählen. In diesem Beispiel lauten die Bedingungen C_2 < 40 und C_3 > 450; die erste passende Zeile trägt das Label 1. Die boolesche Maske setzt jede Vergleichsbedingung in Klammern, da & die beiden Bedingungen verknüpft.

import pandas as pd

df = pd.DataFrame(
    {
        "C_1": ["A", "B", "C", "D"],
        "C_2": [40, 34, 38, 45],
        "C_3": [430, 980, 500, 350],
    }
)

matches = df[(df["C_2"] < 40) & (df["C_3"] > 450)]
first_match = matches.head(1)
print(first_match)
  C_1  C_2  C_3
1   B   34  980

Wenn keine Zeile passt, gibt head(1) einen leeren DataFrame zurück. Benötigen Sie bei einem Treffer eine einzelne Series, wählen Sie sie mit matches.iloc[0] aus. Prüfen Sie zuerst matches.empty, wenn möglicherweise keine Zeile die Kriterien erfüllt.

Mit der Methode query() lässt sich derselbe Filter als Zeichenfolge ausdrücken. Das kann bei lesbaren Spaltenausdrücken hilfreich sein. Achten Sie darauf, dass die Bedingung mit dem Beispiel zum booleschen Filtern übereinstimmt:

import pandas as pd

df = pd.DataFrame(
    {
        "C_1": ["A", "B", "C", "D"],
        "C_2": [40, 34, 38, 45],
        "C_3": [430, 980, 500, 350],
    }
)

matches = df.query("(C_2 < 40) & (C_3 > 450)")
first_match = matches.head(1)
print(first_match)
  C_1  C_2  C_3
1   B   34  980

Für Werte aus Python-Variablen verwenden Sie @variable in einem query()-Ausdruck. Zum Beispiel lässt sich limit = 40 mit df.query("C_2 < @limit") referenzieren.

Die erste Zeile eines Pandas-DataFrames mit der Methode pandas.DataFrame.take() abrufen

pandas.DataFrame.take() wählt Zeilen anhand ihrer Position aus, wenn die Standardzeilenachse verwendet wird. Übergeben Sie [0], um die erste Zeile als DataFrame mit einer Zeile auszuwählen; das ursprüngliche Indexlabel bleibt dabei erhalten.

import pandas as pd

df = pd.DataFrame(
    {
        "C_1": ["A", "B", "C", "D"],
        "C_2": [40, 34, 38, 45],
        "C_3": [430, 980, 200, 350],
    }
)

first_row = df.take([0])
print(first_row)
  C_1  C_2  C_3
0   A   40  430

Verwenden Sie take(), wenn Ihnen bereits eine Liste von Zeilenpositionen vorliegt. Für eine einfache Auswahl der ersten Zeile machen head(1) oder iloc[[0]] die Absicht möglicherweise deutlicher.

Die erste Zeile eines Pandas-DataFrames mit Slicing abrufen

Der Slice df[:1] wählt Zeilen vom Anfang bis zur Position 1 aus, wobei Position 1 nicht eingeschlossen ist. Das Ergebnis ist ein DataFrame, und das Indexlabel der ausgewählten Zeile bleibt erhalten.

import pandas as pd

df = pd.DataFrame(
    {
        "C_1": ["A", "B", "C", "D"],
        "C_2": [40, 34, 38, 45],
        "C_3": [430, 980, 200, 350],
    }
)

first_row = df[:1]
print(first_row)
  C_1  C_2  C_3
0   A   40  430

Fazit

Verwenden Sie df.iloc[0], wenn Sie eine Series möchten, und df.head(1), df.iloc[[0]], df.take([0]) oder df[:1], wenn das Ergebnis ein DataFrame mit einer Zeile sein soll. Um die erste Zeile zu erhalten, die bestimmte Kriterien erfüllt, filtern Sie mit einer booleschen Bedingung oder query() und wählen danach die erste gefilterte Zeile aus. Prüfen Sie matches.empty, bevor Sie einen Indexzugriff ausführen, wenn kein Treffer möglich ist.