J'ai un simple Pandas Dataframe: Si je sélectionne le nom de la ligne Index 1, j'obtiens un simple objet de chaîne: P> df.loc[df.Age==15].Name[1]
Out[40]: 'nick'
4 Réponses :
@ anky_91 a raison. Vous devez utiliser .ILOC, pour ce cas.
import pandas as pd data = [['tom', 10], ['nick', 15], ['juli', 14]] df = pd.DataFrame(data, columns = ['Name', 'Age']) print(df.loc[df.Age==14].iloc[0].Name)
Essayez ceci -
df.loc[df[df['Age'] == 15].index[0], 'Name']
Comme @ayhan a dit dans le commentaire ci-dessus, vous pouvez utiliser Vous pouvez également utiliser ou pandas.series.item () code> comme ceci: pandas.series.array code> a>: p> pandas.series.to_numpy code> : p>
FutureWarning: élément code> a été obsolète et sera supprimé dans une version future
Désolé, je viens de modifier la réponse. La solution actuelle ne doit pas lancer de futurewarning.
@ Ronjensen-gearseallmonica Je pense qu'ils ont décidé de ne pas suivre cette dépréciation. Quelle est la version que vous utilisez?
J'utilise Pandas version 0.25.3.
@ Jaroslavbbezděk Il est disponible en 1.0.1 Voici le problème de "indépecteur" Github.com/ Pandas-dev / Pandas / Problèmes / 29250
Python 3.7.6 et Pandas 0.25.3
J'ai édité ma réponse avec d'autres solutions, si vous voulez.
Je recommande d'envisager l'utilisation de la requête. Si vous voulez seulement obtenir le STR, vous pouvez utiliser:
df.query('Age==15').Name.values[0]
df.loc [df.age == 15] .name.item () code>Vous ne pouvez pas utiliser
iLoc [] code>?df.loc [df.age == 15] .name.iloc [0] code>? oudf.loc [df.age == 15] .name.IAT [0] code>Merci @ anky_91, je suis habitué à R ou C. J'étais époustouflé lorsque le comportement a totalement changé de ce que j'attendais.
@ Ronjensen-gearsAllMonica
loc code> est principalement un indexeur basé sur la clé, pour la position basée sur la position, nous utilisons toujoursiLoc code> :)