En utilisant Python Pandas, j'essaie de trouver le Country
& Place
avec la valeur maximale.
Cela renvoie la valeur maximale:
data.groupby(['Country','Place'])['Value'].max()
Mais comment obtenir le nom Country
et le correspondant Place
?
En supposant qu'il df
possède un index unique, cela donne la ligne avec la valeur maximale:
In [34]: df.loc[df['Value'].idxmax()]
Out[34]:
Country US
Place Kansas
Value 894
Name: 7
Notez que idxmax
renvoie les étiquettes d' index . Ainsi, si le DataFrame a des doublons dans l'index, l'étiquette peut ne pas identifier de manière unique la ligne, donc df.loc
peut renvoyer plus d'une ligne.
Par conséquent, s'il df
n'a pas d'index unique, vous devez rendre l'index unique avant de procéder comme ci-dessus. Selon le DataFrame, vous pouvez parfois utiliser stack
ou set_index
pour rendre l'index unique. Ou, vous pouvez simplement réinitialiser l'index (pour que les lignes soient renumérotées, à partir de 0):
df = df.reset_index()
Cela renverra la ligne entière avec la valeur maximale
la source
Le pays et le lieu sont l'index de la série, si vous n'avez pas besoin de l'index, vous pouvez définir
as_index=False
:Éditer:
Il semble que vous vouliez l'endroit avec une valeur maximale pour chaque pays, le code suivant fera ce que vous voulez:
la source
Je pense que le moyen le plus simple de renvoyer une ligne avec la valeur maximale est d'obtenir son index.
argmax()
peut être utilisé pour renvoyer l'index de la ligne avec la plus grande valeur.Maintenant, l'index peut être utilisé pour obtenir les fonctionnalités de cette ligne particulière:
la source
Utilisez l'
index
attribut deDataFrame
. Notez que je ne tape pas toutes les lignes de l'exemple.Vous pouvez également obtenir la valeur par cet index:
Éditer
Désolé de mal comprendre ce que vous voulez, essayez ce qui suit:
la source
Pour imprimer le pays et le lieu avec une valeur maximale, utilisez la ligne de code suivante.
la source
Ma solution pour trouver les valeurs maximales dans les colonnes:
, également minimum:
la source
Je recommanderais d'utiliser
nlargest
pour de meilleures performances et un code plus court. importerpandas
la source
Vous pouvez utiliser:
print (df [df ['Value'] == df ['Value']. max ()])
la source
import pandas
df est le bloc de données que vous créez.
Utilisez la commande:
Cela affichera le pays et le lieu dont la valeur est maximale.
la source
J'ai rencontré une erreur similaire en essayant d'importer des données à l'aide de pandas.La première colonne de mon ensemble de données avait des espaces avant le début des mots. J'ai supprimé les espaces et cela a fonctionné comme un charme !!
la source