0
votes

Renvoyer une chaîne de la requête .Loc

J'ai un simple Pandas Dataframe: xxx pré>

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 commentaires

df.loc [df.age == 15] .name.item ()


Vous ne pouvez pas utiliser iLoc [] ? df.loc [df.age == 15] .name.iloc [0] ? ou df.loc [df.age == 15] .name.IAT [0]


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 est principalement un indexeur basé sur la clé, pour la position basée sur la position, nous utilisons toujours iLoc :)


4 Réponses :


1
votes

@ 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)


0 commentaires

1
votes

Essayez ceci -

df.loc[df[df['Age'] == 15].index[0], 'Name']


0 commentaires

2
votes

Comme @ayhan a dit dans le commentaire ci-dessus, vous pouvez utiliser pandas.series.item () comme ceci: xxx

Vous pouvez également utiliser pandas.series.array : xxx

ou pandas.series.to_numpy : xxx


7 commentaires

FutureWarning: élément 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.



1
votes

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]


0 commentaires