Ich habe mich danach umgesehen, aber ich kann es nicht finden (obwohl es extrem trivial sein muss).
Das Problem, das ich habe, ist, dass ich den Wert einer Spalte für den ersten und den letzten Eintrag eines Datenrahmens abrufen möchte. Aber wenn ich es mache:
df.ix[0]['date']
Ich bekomme:
datetime.datetime(2011, 1, 10, 16, 0)
aber wenn ich es mache:
df[-1:]['date']
Ich bekomme:
myIndex
13 2011-12-20 16:00:00
Name: mydate
mit einem anderen Format. Im Idealfall möchte ich auf den Wert des letzten Index des Datenrahmens zugreifen können, kann aber nicht finden, wie.
Ich habe sogar versucht, eine Spalte (IndexCopy) mit den Werten des Index zu erstellen und zu versuchen:
df.ix[df.tail(1)['IndexCopy']]['mydate']
Dies ergibt aber auch ein anderes Format (da df.tail (1) ['IndexCopy'] keine einfache Ganzzahl ausgibt).
Irgendwelche Ideen?
Something(["A", "B", "C"])[1]
, aber was möchten Sie, wenn Sie habenSomething([1,2,3,4])[1]
? Lesen Sie die verschiedenen Abschnitte hier in den Dokumenten zu einigen der damit verbundenen Kopfschmerzen.iget()
gibt'Series' object has no attribute 'iget'
.Kombinieren der Antwort von @ comte und der Antwort von dmdip in Get index einer Zeile eines Pandas-Datenrahmens als Ganzzahl
df.tail(1).index.item()
gibt Ihnen den Wert des Index.
Beachten Sie, dass Indizes nicht immer gut definiert sind, unabhängig davon, ob sie mehrfach oder einfach indiziert sind. Das Ändern von Datenrahmen mithilfe von Indizes kann zu unerwartetem Verhalten führen. Wir werden ein Beispiel mit einem Fall mit mehreren Indizes haben, aber beachten Sie, dass dies auch in einem Fall mit einem einzelnen Index zutrifft .
Sagen wir, wir haben
df = pd.DataFrame({'x':[1,1,3,3], 'y':[3,3,5,5]}, index=[11,11,12,12]).stack() 11 x 1 y 3 x 1 y 3 12 x 3 y 5 # the index is (12, 'y') x 3 y 5 # the index is also (12, 'y') df.tail(1).index.item() # gives (12, 'y')
Der Versuch , das letzte Element mit dem Index für den Zugriff auf
df[12, "y"]
Ausbeuten(12, y) 5 (12, y) 5 dtype: int64
Wenn Sie versuchen, den Datenrahmen basierend auf dem Index zu ändern
(12, y)
, ändern Sie zwei Zeilen anstelle einer. Obwohl wir gelernt haben, auf den Wert des Index der letzten Zeile zuzugreifen, ist es möglicherweise keine gute Idee, wenn Sie die Werte der letzten Zeile basierend auf ihrem Index ändern möchten, da es möglicherweise viele gibt, die denselben Index verwenden.df.iloc[-1]
In diesem Fall sollten Sie jedoch auf die letzte Zeile zugreifen.Referenz
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Index.item.html
quelle
df.tail(1).index
scheint am lesbarsten
quelle
index
, diestart=6
anzeigt , das des letzten Elements versetzt sind . Also,df.tail(1)
bekommt das letzte Element,df["your_column"][6]
wäre das letzte Element, füryour_column
, etc (aberdf.last_valid_index()
gibt Ihnen nur die Nummer)Es kann jetzt zu spät sein. Ich verwende die
index
Methode, um den letzten Index eines DataFrame abzurufen, und verwende dann[-1]
, um die letzten Werte abzurufen :Zum Beispiel,
df = pd.DataFrame(np.zeros((4, 1)), columns=['A']) print(f'df:\n{df}\n') print(f'Index = {df.index}\n') print(f'Last index = {df.index[-1]}')
Die Ausgabe ist
df: A 0 0.0 1 0.0 2 0.0 3 0.0 Index = RangeIndex(start=0, stop=4, step=1) Last index = 3
quelle
Sie möchten .iloc mit doppelten Klammern.
import pandas as pd df = pd.DataFrame({"date": range(10, 64, 8), "not_date": "fools"}) df.index += 17 df.iloc[[0,-1]][['date']]
Sie geben .iloc eine Liste von Indizes - insbesondere den ersten und den letzten [0, -1]. Das gibt einen Datenrahmen zurück, von dem Sie nach der Spalte 'Datum' fragen. ['Datum'] gibt Ihnen eine Reihe ( yuck ) und [['Datum']] gibt Ihnen einen Datenrahmen.
quelle
Pandas unterstützt die NumPy-Syntax, die Folgendes ermöglicht:
df[len(df) -1:].index[0]
quelle