web-dev-qa-db-fra.com

Comment obtenir une valeur d'un Pandas DataFrame et non le type d'index et d'objet

Disons que j'ai le DataFrame suivant

 Lettre Numéro 
 A 1 
 B 2 
 C 3 
 D 4 

Qui peut être obtenu via le code suivant

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)

Maintenant, je veux obtenir la valeur C de la colonne Lettres.

La ligne de commande

df[df.Letters=='C'].Letters

reviendra

 2 C
Nom: lettres, type: objet 

Ma question est la suivante: comment puis-je obtenir uniquement la valeur C et non la sortie complète sur deux lignes?

Merci beaucoup.
Eduardo

47
Eduardo
df[df.Letters=='C'].Letters.item()

Cela renvoie le premier élément de l'index/de la série renvoyé à partir de cette sélection. Dans ce cas, la valeur est toujours le premier élément. 

MODIFIER:

Ou vous pouvez exécuter un loc () et accéder au premier élément de cette façon. C'était plus court et c'est la façon dont je l'ai mis en œuvre dans le passé. 

78
valkn0t

Utilisez l'attribut values pour renvoyer les valeurs sous forme de tableau np, puis utilisez [0] pour obtenir la première valeur:

In [4]:
df.loc[df.Letters=='C','Letters'].values[0]

Out[4]:
'C'

MODIFIER

Personnellement, je préfère accéder aux colonnes à l'aide d'opérateurs d'indice:

df.loc[df['Letters'] == 'C', 'Letters'].values[0]

Cela évite les problèmes dans lesquels les noms de colonnes peuvent avoir des espaces ou des tirets -, ce qui signifie que l'accès à l'aide de ..

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'

modifier:

en fait, vous pouvez simplement indexer le jeu de données comme n'importe quel ancien tableau.

import pandas as pd

dataset = pd.read_csv("data.csv")
first_value = dataset["column name"][0]

>>> print(first_value)
'item_0'
0
Lewis