Disons que j'ai le DataFrame suivant
Numéro de lettre 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
Comment puis-je obtenir uniquement la valeur C et non la sortie sur deux lignes?
pd.DataFrame({'Letters': letters, 'Numbers': numbers})
Réponses:
Cela renvoie le premier élément de l'Index / Série renvoyé par cette sélection. Dans ce cas, la valeur est toujours le premier élément.
ÉDITER:
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é.
la source
FutureWarning: "item" has been deprecated and will be removed in a future version
df[df.Letters=='C'].Letters.iloc[0]
. Il produit le premier élément (qui est également l'unique) dans la série de résultats.df[df.Letters=='C'].Letters.squeeze()
place. Cela fonctionne de la même manière. :)Utilisez l'
values
attribut pour renvoyer les valeurs sous forme de tableau np, puis utilisez[0]
pour obtenir la première valeur:ÉDITER
Personnellement, je préfère accéder aux colonnes en utilisant des opérateurs d'indice:
Cela évite les problèmes où les noms de colonne peuvent avoir des espaces ou des tirets,
-
ce qui signifie que l'accès à l'aide de.
.la source
.
colonnes pour accéder car cela ne fonctionnera pas toujours, par exemple si le nom de la colonne commence par une valeur numérique ou s'il y a des caractères non alpha tels qu'un espace dans le nom de la colonne, donc je préfère toujoursdf['col_name']
df['col_name']
notation au lieu de la.
notation. Merci encore.Éditer:
en fait, vous pouvez simplement indexer l'ensemble de données comme n'importe quel ancien tableau.
la source