it-swarm.com.de

So erhalten Sie einen Wert aus einem Pandas DataFrame und nicht aus dem Index und dem Objekttyp

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

47
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. 

78
valkn0t

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.

22
EdChum
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'
0
Lewis