Ich habe eine Bedingung erstellt, die genau eine Zeile aus meinem Datenrahmen extrahiert:
d2 = df[(df['l_ext']==l_ext) & (df['item']==item) & (df['wn']==wn) & (df['wd']==1)]
Jetzt möchte ich einen Wert aus einer bestimmten Spalte entnehmen:
val = d2['col_name']
Als Ergebnis erhalte ich jedoch einen Datenrahmen, der eine Zeile und eine Spalte enthält ( dh eine Zelle). Es ist nicht das, was ich brauche. Ich brauche einen Wert (eine Float-Nummer). Wie kann ich das bei Pandas machen?
SettingWithCopyWarning
, können Sie in diesem Beitrag eine Erläuterung der Warnung und möglicher Problemumgehungen / Lösungen finden.Antworten:
Wenn Sie einen DataFrame mit nur einer Zeile haben, greifen Sie auf die erste (einzige) Zeile als Serie mit
iloc
und dann auf den Wert mit dem Spaltennamen zu:quelle
at
ist eine wirklich schöne Antwort, obwohl ich es seltsam finde, wie es istix
:))my_df.loc[my_df['Col1'] == foo]['Col2']
gibt immer noch ein Objekt vom Typ zurück<class 'pandas.core.series.Series'>
Dies ist ein schneller Zugriff für Skalare
quelle
.iloc[-1]['A']
können, können Sie nicht tunat[-1,'A']
, um den letztenat[df.index[-1],'A']
Sie können Ihren 1x1-Datenrahmen in ein Numpy-Array verwandeln und dann auf den ersten und einzigen Wert dieses Arrays zugreifen:
quelle
.get_values()[0]
auch verwendet.Die meisten Antworten werden verwendet,
iloc
was für die Auswahl nach Position gut ist.Wenn Sie eine Auswahl nach Etikett benötigen, ist
loc
dies bequemer.quelle
Ich brauchte den Wert einer Zelle, ausgewählt nach Spalten- und Indexnamen. Diese Lösung hat bei mir funktioniert:
original_conversion_frequency.loc[1,:].values[0]
quelle
Es sieht nach Änderungen nach Pandas 10.1 / 13.1 aus
Ich habe ein Upgrade von 10.1 auf 13.1 durchgeführt, bevor iloc nicht verfügbar ist.
Erhält jetzt mit 13.1
iloc[0]['label']
ein einzelnes Wertearray anstelle eines Skalars.So was:
Ausgabe:
quelle
Die schnellsten / einfachsten Optionen, die ich gefunden habe, sind die folgenden. 501 repräsentiert den Zeilenindex.
quelle
get_value
ist jetzt veraltet (v0.21.0 RC1 (13. Oktober 2017)) Referenz ist hier.get_value and .set_value on Series, DataFrame, Panel, SparseSeries, and SparseDataFrame are deprecated in favor of using .iat[] or .at[] accessors (GH15269)
iloc
Filtern Sie für Pandas 0.10, wo dies nicht verfügbar ist, aDF
und rufen Sie die Daten der ersten Zeile für die Spalte abVALUE
:Wenn mehr als eine Zeile gefiltert ist, erhalten Sie den ersten Zeilenwert. Es gibt eine Ausnahme, wenn der Filter zu einem leeren Datenrahmen führt.
quelle
get_value
ist jetzt veraltet (v0.21.0 RC1 (13. Oktober 2017)) Referenz ist hier.get_value and .set_value on Series, DataFrame, Panel, SparseSeries, and SparseDataFrame are deprecated in favor of using .iat[] or .at[] accessors (GH15269)
iat
oderat
kann nicht den Wert erhalten , basierend auf den Spaltennamen.Ich bin mir nicht sicher, ob dies eine gute Praxis ist, aber ich habe festgestellt, dass ich auch nur den Wert erhalten kann, indem ich die Serie als besetze
float
.z.B
quelle
Es muss nicht kompliziert sein:
quelle
quelle