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)
Nun 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, dtype: Objekt
Meine Frage ist: Wie kann ich nur den Wert C und nicht die gesamte zweizeilige Ausgabe erhalten?
Vielen Dank.
Eduardo
df[df.Letters=='C'].Letters.item()
Dies gibt das erste Element in dem Index/der Serie zurück, das von dieser Auswahl zurückgegeben wurde. In diesem Fall ist der Wert immer das erste Element.
EDIT:
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.
Verwenden Sie das values
-Attribut, um die Werte als np-Array zurückzugeben, und verwenden Sie dann [0]
, um den ersten Wert abzurufen:
In [4]:
df.loc[df.Letters=='C','Letters'].values[0]
Out[4]:
'C'
EDIT
Ich persönlich ziehe es vor, auf die Spalten über Indexoperatoren zuzugreifen:
df.loc[df['Letters'] == 'C', 'Letters'].values[0]
Dadurch werden Probleme vermieden, bei denen die Spaltennamen Leerzeichen oder Bindestriche -
enthalten können, was bedeutet, dass der Zugriff mit .
erfolgt.
import pandas as pd
dataset = pd.read_csv("data.csv")
values = list(x for x in dataset["column name"])
>>> values[0]
'item_0'
bearbeiten:
tatsächlich können Sie die Datenmenge einfach wie jedes alte Array indizieren.
import pandas as pd
dataset = pd.read_csv("data.csv")
first_value = dataset["column name"][0]
>>> print(first_value)
'item_0'