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.