Angenommen, ich habe den folgenden DataFrame
Briefnummer A 1 B 2 C 3 D 4
Welches kann durch den folgenden Code erhalten werden
import pandas as pd
letters=pd.Series(('A', 'B', 'C', 'D'))
numbers=pd.Series((1, 2, 3, 4))
keys=('Letters', 'Numbers')
df=pd.concat((letters, numbers), axis=1, keys=keys)
Jetzt möchte ich den Wert C aus der Spalte Buchstaben erhalten.
Die Befehlszeile
df[df.Letters=='C'].Letters
wird zurückkehren
2 C. Name: Buchstaben, Typ: Objekt
Wie kann ich nur den Wert C und nicht die gesamte zweizeilige Ausgabe erhalten?
pd.DataFrame({'Letters': letters, 'Numbers': numbers})
Antworten:
Dies gibt das erste Element im Index / der Reihe zurück, das von dieser Auswahl zurückgegeben wurde. In diesem Fall ist der Wert immer das erste Element.
BEARBEITEN:
Oder Sie können loc () ausführen und auf diese Weise auf das erste Element zugreifen. Dies war kürzer und so habe ich es in der Vergangenheit umgesetzt.
quelle
FutureWarning: "item" has been deprecated and will be removed in a future version
df[df.Letters=='C'].Letters.iloc[0]
. Es erzeugt das erste Element (das auch das Unikat ist) in der Ergebnisreihe.df[df.Letters=='C'].Letters.squeeze()
stattdessen. Dies funktioniert genauso. :)Verwenden Sie das
values
Attribut, um die Werte als np-Array zurückzugeben, und verwenden Sie dann[0]
, um den ersten Wert abzurufen :BEARBEITEN
Ich persönlich bevorzuge den Zugriff auf die Spalten mit Indexoperatoren:
Dies vermeidet Probleme, bei denen die Spaltennamen Leerzeichen oder Bindestriche enthalten können,
-
die den Zugriff mit verwenden.
.quelle
.
um auf Spalten zuzugreifen, da dies beispielsweise nicht immer funktioniert, wenn der Spaltenname mit einem numerischen Wert beginnt oder der Spaltenname keine Alpha-Zeichen enthält, z. B. ein Leerzeichen, daher bevorzuge ich immerdf['col_name']
df['col_name']
Notation anstelle der.
Notation gefunden. Danke noch einmal.bearbeiten:
Tatsächlich können Sie das Dataset einfach wie jedes alte Array indizieren.
quelle