Comment puis-je trouver la ligne pour laquelle la valeur d'une colonne spécifique est maximum ?
df.max()
me donnera la valeur maximale pour chaque colonne, je ne sais pas comment obtenir la ligne correspondante.
Comment puis-je trouver la ligne pour laquelle la valeur d'une colonne spécifique est maximum ?
df.max()
me donnera la valeur maximale pour chaque colonne, je ne sais pas comment obtenir la ligne correspondante.
Si vous voulez la rangée entière au lieu de la seule id
vous pouvez utiliser df.nlargest
et indiquez le nombre de lignes "supérieures" que vous souhaitez. Vous pouvez également indiquer pour quelle(s) colonne(s) vous le souhaitez.
df.nlargest(2,['A'])
vous donnera les lignes correspondant aux 2 premières valeurs de A
.
utiliser df.nsmallest
pour les valeurs minimales.
La solution directe ".argmax()" ne fonctionne pas pour moi.
L'exemple précédent fourni par @ely
>>> import pandas
>>> import numpy as np
>>> df = pandas.DataFrame(np.random.randn(5,3),columns=['A','B','C'])
>>> df
A B C
0 1.232853 -1.979459 -0.573626
1 0.140767 0.394940 1.068890
2 0.742023 1.343977 -0.579745
3 2.125299 -0.649328 -0.211692
4 -0.187253 1.908618 -1.862934
>>> df['A'].argmax()
3
>>> df['B'].argmax()
4
>>> df['C'].argmax()
1
renvoie le message suivant :
FutureWarning: 'argmax' is deprecated, use 'idxmax' instead. The behavior of 'argmax'
will be corrected to return the positional maximum in the future.
Use 'series.values.argmax' to get the position of the maximum now.
Ma solution est donc la suivante :
df['A'].values.argmax()
Considérant ce cadre de données
[In]: df = pd.DataFrame(np.random.randn(4,3),columns=['A','B','C'])
[Out]:
A B C
0 -0.253233 0.226313 1.223688
1 0.472606 1.017674 1.520032
2 1.454875 1.066637 0.381890
3 -0.054181 0.234305 -0.557915
En supposant que l'on veuille connaître les lignes où la colonne "C" est maximale, la formule suivante fera l'affaire
[In]: df[df['C']==df['C'].max()])
[Out]:
A B C
1 0.472606 1.017674 1.520032
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
1 votes
Est-il possible d'obtenir les deux valeurs les plus élevées au lieu de la valeur maximale ?
9 votes
Vous pouvez utiliser
sort_values
et obtenir l'index :df.sort_values('col', ascending=False)[:2].index
8 votes
Paresseux1 : éviter de trier inutilement une série entière parce que c'est O(N logN) en moyenne, alors que trouver max/idxmax est seulement O(N).
0 votes
@AsheKetchum avez-vous obtenu une réponse à cette question ?