Ich habe nach der Antwort auf diese Frage gesucht, aber alles, was ich herausfinden kann, ist Folgendes:
df[df.columns[len(df.columns)-1]]
was mir unweildy und unpythonisch (und langsam?) erscheint.
Was ist der einfachste Weg, um die Daten für die letzte Spalte in einem Pandas-Datenrahmen auszuwählen, ohne den Namen der Spalte anzugeben?
Etwas ähnlich wie bei Ihrem ursprünglichen Versuch, aber mehr pythonisch, ist es, Pythons Standardkonvention für die negative Indizierung zu verwenden, um vom Ende rückwärts zu zählen:
df[df.columns[-1]]
quelle
Dies sind einige Dinge, die Ihnen helfen, alles zu verstehen ... mit iloc
In iloc [Anfangszeile: Endzeile, Anfangsspalte: Endspalte]
Fall 1: Wenn Sie nur die letzte Spalte möchten ---
df.iloc[:,-1] & df.iloc[:,-1:]
bedeutet dies, dass Sie nur die letzte Spalte möchten ...Fall 2: Wenn Sie alle Spalten und alle Zeilen außer der letzten Spalte
df.iloc[:,:-1]
möchten --- bedeutet dies, dass Sie alle Spalten und alle Zeilen außer der letzten Spalte möchten ...Fall 3: Wenn Sie nur die letzte Zeile möchten ---
df.iloc[-1:,:] & df.iloc[-1,:]
bedeutet dies, dass Sie nur die letzte Zeile möchten ...Fall 4: Wenn Sie alle Spalten und alle Zeilen außer der letzten Zeile
df.iloc[:-1,:]
möchten --- bedeutet dies, dass Sie alle Spalten und alle Zeilen außer der letzten Spalte möchten ...Fall 5: Wenn Sie alle Spalten und alle Zeilen außer der letzten Zeile und der letzten Spalte
df.iloc[:-1,:-1]
möchten --- bedeutet dies, dass Sie alle Spalten und alle Zeilen außer der letzten Spalte und der letzten Zeile möchten ...quelle
Die Frage ist: Wie wählt man die letzte Spalte eines Datenrahmens aus? Appart @piRSquared, keiner beantwortet die Frage.
Der einfachste Weg, einen Datenrahmen mit der letzten Spalte zu erhalten, ist:
df.iloc[ :, -1:]
quelle
df.T.iloc[-1]
df.T.tail(1)
pd.Series(df.values[:, -1], name=df.columns[-1])
quelle
Nur um @Anshul Singh Suryans Antwort hinzuzufügen:
Wenn wir den Datenrahmen teilen, um nur die letzte Spalte zu erhalten:
Wenn wir uns trennen wie:
y = df.iloc[:,-1:] - y
bleibt eindataframe
Allerdings, wenn wir uns gerne trennen
y = df.iloc[:,-1] - y
wird einSeries
.Dies ist ein bemerkenswerter Unterschied, den ich bei beiden Ansätzen festgestellt habe. Wenn Sie sich nicht für den resultierenden Typ interessieren, können Sie einen der beiden verwenden. Andernfalls müssen Sie sich um die oben genannten Ergebnisse kümmern.
Dies gilt für eine beliebige Anzahl von Zeilen, die Sie extrahieren möchten, und nicht nur für die letzte Zeile. Wenn Sie beispielsweise die letzte
n
Anzahl von Zeilen eines Datenrahmens möchten, wobei n eine Ganzzahl ist, die kleiner oder gleich der Anzahl der im Datenrahmen vorhandenen Spalten ist, können Sie auf einfache Weise Folgendes tun:Ersetzen Sie
n
durch die Anzahl der gewünschten Spalten. Gleiches gilt auch für Zeilen.quelle
Dies ist ein anderer Weg, dies zu tun. Ich denke vielleicht etwas allgemeiner:
df.ix[:,-1]
quelle
ix
mischt Label- und Index-Location-Accessor. Weitere Informationen finden Sie hier .ix
mittlerweile veraltet.