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
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é.
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 .
.
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'