web-dev-qa-db-fra.com

renvoyer la valeur maximale de la trame de données panda dans son ensemble, non basée sur une colonne ou des lignes

J'essaie d'obtenir la valeur maximale d'une trame de données panda dans son ensemble. Je ne suis pas intéressé par la ligne ou la colonne dont il provient. Je suis juste intéressé par une seule valeur maximale dans la trame de données.

Voici mon dataframe:

df = pd.DataFrame({'group1': ['a','a','a','b','b','b','c','c','d','d','d','d','d'],
                        'group2': ['c','c','d','d','d','e','f','f','e','d','d','d','e'],
                        'value1': [1.1,2,3,4,5,6,7,8,9,1,2,3,4],
                        'value2': [7.1,8,9,10,11,12,43,12,34,5,6,2,3]})

Voici à quoi ça ressemble:

   group1 group2  value1  value2
0       a      c     1.1     7.1
1       a      c     2.0     8.0
2       a      d     3.0     9.0
3       b      d     4.0    10.0
4       b      d     5.0    11.0
5       b      e     6.0    12.0
6       c      f     7.0    43.0
7       c      f     8.0    12.0
8       d      e     9.0    34.0
9       d      d     1.0     5.0
10      d      d     2.0     6.0
11      d      d     3.0     2.0
12      d      e     4.0     3.0

Production attendue:

43.0

J'étais sous l'hypothèse que df.max () ferait ce travail, mais il renvoie une valeur maximale pour chaque colonne, mais cela ne m'intéresse pas. J'ai besoin du maximum d'une trame de données entière.

25
Boosted_d16

Le maximum de toutes les valeurs dans le DataFrame peut être obtenu en utilisant df.values.max():

In [10]: df.values.max()
Out[10]: 'f'

Le max est f plutôt que 43,0 car, dans CPython2,

In [11]: 'f' > 43.0
Out[11]: True

Dans CPython2, Les objets de différents types ... sont classés par leurs noms de type . Ainsi, tout str se compare comme supérieur à tout int depuis 'str' > 'int'.

En Python3, la comparaison des chaînes et des entiers génère un TypeError.


Pour rechercher la valeur maximale dans les colonnes numériques uniquement, utilisez

df.select_dtypes(include=[np.number]).max()
38
unutbu

Salut la réponse la plus simple est la suivante. Répondre:

df.max().max()

Explication:
series = df.max() vous donne une série contenant les valeurs maximales pour chaque colonne.
Par conséquent, series.max() vous donne le maximum pour l'ensemble de la trame de données.

:) les meilleures réponses sont généralement les plus simples

12
Rilwan Adewoyin

Max peut être trouvé dans ces deux étapes:

maxForRow = allData.max(axis=0) #max for each row
globalMax = maxForRow.max(); #max across all rows
1
aileronajay

Pour le max, vérifiez la réponse précédente ... Pour le max des valeurs utilisez par exemple:

val_cols = [c for c in df.columns if c.startswith('val')]
print df[val_cols].max()
0
ntg