Obtener el valor máximo de la columna para las filas donde se cumple una condición

Anna

Tengo un DataFrame que se parece a esto:

| Age | Married | OwnsHouse |
| 23  | True    | False     |
| 35  | True    | True      |
| 14  | False   | False     |
| 27  | True    | True      |

Quiero encontrar la edad más alta de cualquiera que esté casado y sea dueño de una casa. La respuesta aquí sería 35. Mi primer pensamiento fue hacer:

df_subset = df[df['Married'] == True and df['OwnsHouse'] == True]
max_age = df_subset.max()

Sin embargo, el conjunto de datos es grande (50 MB) y me temo que será computacionalmente costoso ya que pasa por el conjunto de datos dos veces.

Mi segundo pensamiento fue hacer:

max_age = 0
for index, row in df.iterrows():
    if(row[index]['Married] and row['index']['OwnsHouse'] and row[index]['Age] > max_age):
    max_age = row[index]['Age']

¿Existe una forma más rápida de hacer esto?

cs95

Su primer enfoque es sólido, pero aquí hay una opción simple:

df[df['Married'] & df['OwnsHouse']].max()

Age          35.0
Married       1.0
OwnsHouse     1.0
dtype: float64

O solo la edad:

df.loc[df['Married'] & df['OwnsHouse'], 'Age'].max()
# 35

Si tiene varias columnas booleanas, sugeriría algo un poco más escalable,

df[df[['Married', 'OwnsHouse']].all(axis=1)].max()

Age          35.0
Married       1.0
OwnsHouse     1.0
dtype: float64

Dónde,

df[['Married', 'OwnsHouse']].all(axis=1)

0    False
1     True
2    False
3     True
dtype: bool

Que es lo mismo que,

df['Married'] & df['OwnsHouse']

0    False
1     True
2    False
3     True
dtype: bool

Pero en lugar de buscar manualmente el AND de N máscaras booleanas, .allhazlo por ti.

query es otra opción:

df.query("Married and OwnsHouse")['Age'].max()
# 35

No requiere un paso intermedio para calcular una máscara.


Su método es lo suficientemente rápido, pero si desea microoptimizar, aquí hay algunas opciones más con numpy:

# <= 0.23
df[(df['Married'].values & df['OwnsHouse'].values)].max()
df[df[['Married', 'OwnsHouse']].values.all(axis=1)].max()
# 0.24+
df[(df['Married'].to_numpy() & df['OwnsHouse'].to_numpy())].max()
df[df[['Married', 'OwnsHouse']].to_numpy().all(axis=1)].max()

Age          35.0
Married       1.0
OwnsHouse     1.0
dtype: float64

Aunque probablemente quieras solo la edad. Hacer esto

df.loc[(df['Married'].to_numpy() & df['OwnsHouse'].to_numpy()), 'Age'].max()
# 35

Si te apetece más numpy, haz esto:

df.loc[(
   df['Married'].to_numpy() & df['OwnsHouse'].to_numpy()), 'Age'
].to_numpy().max()
# 35

O mejor aún, tira a los pandas,

df['Age'].to_numpy()[df['Married'].to_numpy() & df['OwnsHouse'].to_numpy()].max()
# 35

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

Obtener el valor máximo de la columna para las filas donde se cumple una condición

Copie el primer valor del grupo en todas las filas donde se cumple la condición

Copie el primer valor del grupo en todas las filas donde se cumple la condición

Obtenga el número de filas de mysql donde se cumple la condición y el valor máximo en 1 consulta

¿Una forma eficiente de filtrar solo las primeras filas donde se cumple la condición?

¿Una forma eficiente de filtrar solo las primeras filas donde se cumple la condición?

Usando df.apply para devolver el recuento de filas donde se cumple una condición

Reemplazar el valor de las celdas en varias columnas (con valores de una columna) si se cumple la condición

Los pandas se aplican pero solo para las filas donde se cumple una condición

SQL: obtener filas donde el valor de la columna 'x' es máximo

los pandas copian el valor de una columna a otra si se cumple la condición

¿Cómo obtener todas las filas en la tabla MySQL donde el valor de una columna es el mismo?

Cuando se cumple una condición, muestra el valor de la fila actual en cada línea debajo de ella, donde la condición no se cumple

MySQL selecciona todos los nombres de columna donde se cumple la condición para una fila específica

Edite el valor de las celdas en una columna específica si no se cumple una condición usando Excel VBA

Cómo encontrar el par de filas donde la diferencia del valor de las columnas es el grupo máximo por algún valor de columna

Python Pandas agrega una columna para el valor máximo por filas de las columnas seleccionadas

Devolver la ubicación de las variables en un rango de una columna de marco de datos de pandas donde se cumple una condición

Seleccionar el valor máximo de una columna donde el nombre de la columna se proporciona en una variable

Obtener el valor más pequeño de una columna en las últimas n filas

En R, recorre las filas si se cumple la condición y el valor de la cadena está contenido en un vector de caracteres, establezca un nuevo valor de columna en el elemento de vector de caracteres

¿Cómo sumo el valor de la columna B si la columna A cumple una determinada condición para cada valor en la columna A con una fórmula?

Cómo obtener el inicio y el final de la subsección de una matriz 2d donde se cumple una condición

Obtenga TODAS las filas donde hay más de X entradas para el valor de la columna

¿Cómo obtener un encabezado de columna si se cumple una condición particular según el valor de fila y columna del marco de datos?

Crear una columna que asigne el valor máximo de un conjunto de filas por condición a todas las filas de ese grupo

Obtenga el valor máximo de una ventana de filas como nueva columna para todas las filas

Obtener el elemento máximo de la lista de la lista si se cumple la condición

Cambiar el valor de la columna cuando se cumple la condición

TOP Lista

  1. 1

    ¿Cómo ocultar la aplicación web de los robots de búsqueda? (ASP.NET)

  2. 2

    Pandas의 CSV 파일을 Pandas 데이터 프레임으로 가져 오기

  3. 3

    uitableview delete button image in iOS

  4. 4

    Manera correcta de agregar referencias al proyecto C # de modo que sean compatibles con el control de versiones

  5. 5

    Swift / Firebase : Facebook 사용자가 계정을 만들 때 Firebase 데이터베이스에 제대로 저장하려면 어떻게해야합니까?

  6. 6

    caída condicional de filas desde un marco de datos de pandas

  7. 7

    Link library in Visual Studio, why two different ways?

  8. 8

    Pagination class not getting applied in html

  9. 9

    Que signifie Decimal (-1)?

  10. 10

    UIButton textLabel with different fonts

  11. 11

    WPF pleine largeur DataGridColumn sur la largeur de DataGrid

  12. 12

    Opción de máquina virtual no reconocida 'MaxPermSize = 512m' cuando se ejecuta Zeppelin

  13. 13

    matplotlib로 그래프를 그리는 동안 커서 위치에서 날짜 / 시간을 볼 수 없습니다. "DateFormatter에서 x = 0 값을 찾았습니다"라는 오류가 발생합니다.

  14. 14

    ¿Es posible en Windows evitar que otras aplicaciones se enganchen en las DLL del sistema?

  15. 15

    Error de la base de datos de Android Firebase: Permiso denegado al depurar en un teléfono

  16. 16

    Pandas: suma filas de DataFrame para columnas dadas

  17. 17

    ggplot2: gráfico con líneas y puntos para problemas de leyenda de dos conjuntos de datos

  18. 18

    ¿Cómo especificar el puerto en el que se aloja una aplicación ASP.NET Core?

  19. 19

    Recherche de la position d'index d'une valeur dans r dataframe

  20. 20

    GPU를 사용하여 ffmpeg 필터의 처리 속도를 가속화하는 방법은 무엇입니까?

  21. 21

    nested observables executed one after the other after termination

CalienteEtiquetas

Archivo