Je demande une seule valeur de mon bloc de données qui semble être "dtype: object". Je veux simplement imprimer la valeur telle qu'elle est sans imprimer aussi l'index ou d'autres informations. Comment puis-je faire cela?
col_names = ['Host', 'Port']
df = pd.DataFrame(columns=col_names)
df.loc[len(df)] = ['a', 'b']
t = df[df['Host'] == 'a']['Port']
print(t)
RÉSULTAT ATTENDU: b
Si vous pouvez garantir qu'un seul résultat est retourné, utilisez loc
et appelez item
:
>>> df.loc[df['Host'] == 'a', 'Port'].item()
'b'
Ou, de même,
>>> df.loc[df['Host'] == 'a', 'Port'].values[0]
'b'
... pour obtenir la valeur first (de même, .values[1]
pour le second). C'est mieux que df.loc[df['Host'] == 'a', 'Port'][0]
car, si votre DataFrame ressemble à ceci,
Host Port
1 a b
Ensuite, "KeyError: 0" sera lancé—
df.loc[df['Host'] == 'a', 'Port'][0]
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
Vous pouvez également utiliser at
:
>>> df.at[df['Host'].eq('a').idxmax(), 'Port']
'b'
L'inconvénient est que si "a" n'existe pas, idxmax
renverra le premier index (et renverra un résultat incorrect).
cela devrait fonctionner simplement ..
>>> df
Host Port
0 a b
>>> df[df['Host'] == 'a']['Port'][0] # will choose the first index simply which is 'b'
'b'
OU, utilisez avec un imprimé qui supprimera les tiques entourées.
>>> print(df[df['Host'] == 'a']['Port'][0])
b
Cela sera plus facile car vous venez de choisir l'index souhaité même si vous avez plusieurs valeurs sur les colonnes Port
Exemple:
>>> df
Host Port
0 a b
1 c c
Recherche de a
et c
distincts en fonction de l'index:
>>> df[df['Host'] == 'a']['Port'][0]
'b'
>>> df[df['Host'] == 'c']['Port'][1]
'c'
Comme mentionné dans mon commentaire, l'utilisation de [1] devrait fonctionner ensuite, pour extraire la variable que vous recherchez.
t = df[df['Host'] == 'a']['Port'][1]