Encuentre la fila donde los valores de la columna son máximos en un DataFrame de pandas

lazy1:

¿Cómo puedo encontrar la fila para la que el valor de una columna específica es máximo ?

df.max() me dará el valor máximo para cada columna, no sé cómo obtener la fila correspondiente.

ely:

Usa la idxmaxfunción pandas . Es sencillo:

>>> 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
  • Alternativamente, también puede usar numpy.argmax, como numpy.argmax(df['A']): proporciona lo mismo y aparece al menos tan rápido como idxmaxen observaciones superficiales.

  • idxmax() devuelve etiquetas de índices, no números enteros.

    • Ejemplo ': si tiene valores de cadena como etiquetas de índice, como las filas' a 'a' e ', es posible que desee saber que el máximo se produce en la fila 4 (no en la fila' d ').
    • si desea la posición entera de esa etiqueta dentro del Index, debe obtenerla manualmente (lo que puede ser complicado ahora que se permiten etiquetas de fila duplicadas).

NOTAS HISTORICAS:

  • idxmax()solía llamarse argmax()antes de 0.11
  • argmax fue obsoleto antes de 1.0.0 y eliminado por completo en 1.0.0
  • en Pandas 0.16, argmaxsolía existir y realizar la misma función (aunque parecía funcionar más lentamente que idxmax).
    • argmaxLa función devolvió la posición entera dentro del índice de la ubicación de fila del elemento máximo.
    • los pandas pasaron a usar etiquetas de fila en lugar de índices enteros. Los índices enteros posicionales solían ser muy comunes, más comunes que las etiquetas, especialmente en aplicaciones donde las etiquetas de fila duplicadas son comunes.

Por ejemplo, considere este juguete DataFramecon una etiqueta de fila duplicada:

In [19]: dfrm
Out[19]: 
          A         B         C
a  0.143693  0.653810  0.586007
b  0.623582  0.312903  0.919076
c  0.165438  0.889809  0.000967
d  0.308245  0.787776  0.571195
e  0.870068  0.935626  0.606911
f  0.037602  0.855193  0.728495
g  0.605366  0.338105  0.696460
h  0.000000  0.090814  0.963927
i  0.688343  0.188468  0.352213
i  0.879000  0.105039  0.900260

In [20]: dfrm['A'].idxmax()
Out[20]: 'i'

In [21]: dfrm.iloc[dfrm['A'].idxmax()]  # .ix instead of .iloc in older versions of pandas
Out[21]: 
          A         B         C
i  0.688343  0.188468  0.352213
i  0.879000  0.105039  0.900260

Así que aquí un uso ingenuo de idxmaxno es suficiente, mientras que la forma antigua de argmaxproporcionaría correctamente la ubicación posicional de la fila máxima (en este caso, la posición 9).

Este es exactamente uno de esos tipos desagradables de comportamientos propensos a errores en los lenguajes tipados dinámicamente que hace que este tipo de cosas sea tan desafortunado y que valga la pena derrotar a un caballo muerto. Si está escribiendo código de sistemas y su sistema de repente se usa en algunos conjuntos de datos que no se limpian adecuadamente antes de unirse, es muy fácil terminar con etiquetas de fila duplicadas, especialmente etiquetas de cadena como un identificador CUSIP o SEDOL para activos financieros. No puede usar fácilmente el sistema de tipos para ayudarlo, y es posible que no pueda imponer la exclusividad en el índice sin encontrarse con datos que faltan inesperadamente.

Así que te queda la esperanza de que tus pruebas unitarias cubran todo (no lo hicieron, o más probablemente nadie escribió ninguna prueba); de lo contrario (lo más probable) te quedas esperando para ver si te encuentras con esto. error en tiempo de ejecución, en cuyo caso probablemente tenga que dejar caer muchas horas de trabajo de la base de datos a la que estaba generando resultados, golpearse la cabeza contra la pared en IPython tratando de reproducir manualmente el problema, finalmente descubriendo que es porque soloidxmax puede informa la etiqueta de la fila máxima y luego te decepciona que ninguna función estándar obtenga automáticamente las posiciones de la fila máxima para ti, escribe una implementación con errores, edita el código y reza para que no te encuentres con el problema nuevamente.

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Encuentre la fila / columna de todos los valores máximos en cada fila de una matriz

Cree Python DataFrame desde el diccionario donde las claves son los nombres de columna y los valores de la fila

Lista de la (fila, columna) de los n valores más grandes en un DataFrame de pandas numérico?

Convertir el marco de datos de pandas en un diccionario donde las claves son el índice y los valores son la lista de valores de columna

Encuentre valores únicos en un marco de datos de Pandas, independientemente de la ubicación de la fila o columna

Encuentre los valores máximos de una columna en un conjunto de datos de serie temporal

Seleccione TODAS las filas donde los valores de la columna Pandas DataFrame en una lista

¿Cómo seleccionar la columna de valores múltiples donde son comunes en un campo especificado?

Devuelve 4 filas de matriz np donde los valores son los más grandes en la columna 1

DATAFRAME: eliminar duplicados donde los valores de la columna son iguales para una clave única

DATAFRAME: eliminar duplicados donde los valores de la columna son iguales para una clave única

Eliminar la fila DataFrame en Pandas donde el valor de la columna en la lista

¿Cómo creo una nueva columna en pyspark donde los valores de fila son los mismos?

Cómo encontrar nombres de filas donde los valores son máximos en una columna en Pyspark

Python y pandas: suelte filas donde los valores de columna son valores de índice en otro DataFrame

Elija entre dos valores de una columna donde los valores en otras columnas de la tabla son los mismos

Elija entre dos valores de una columna donde los valores en otras columnas de la tabla son los mismos

Hive seleccione una columna basada en una segunda columna donde los valores de la segunda columna son diferentes

Encuentre los 5 valores principales basados en la suma de la última columna y la última fila

Encuentre los valores mínimos de la columna df basados en otra columna

Encuentre los valores mínimos de la columna df basados en otra columna

Encuentre la fila donde dos columnas están cerca de los valores óptimos

¿Hay alguna forma en Pandas de usar valores de fila anteriores en dataframe.apply donde los valores anteriores también se calculan en la aplicación?

Pandas: crea una columna basada en la suma de los valores de la fila anterior

Creación de una nueva fila en Pandas según la condición y los valores máximos

Establecer el valor mínimo o la columna de forma aleatoria donde los valores mínimos son los mismos

Encuentre los valores máximos en la enésima columna para cada valor distinto en la primera columna en bash

Encuentre todos los valores máximos vinculados en una fila y devuelva verdadero o falso si la columna contiene el valor máximo

¿Cómo crear una columna que identifique otra columna donde cambian los valores de la fila?

TOP Lista

CalienteEtiquetas

Archivo