sub iloc groupby columns python pandas dataframe

iloc - Python Pandas: indexación booleana en varias columnas



select columns pandas (2)

Esta pregunta ya tiene una respuesta aquí:

a pesar de que hay al menos two good tutoriales sobre cómo indexar un DataFrame en la biblioteca de los pandas de Python, todavía no puedo encontrar una forma elegante de SELECT en más de una columna.

>>> d = pd.DataFrame({''x'':[1, 2, 3, 4, 5], ''y'':[4, 5, 6, 7, 8]}) >>> d x y 0 1 4 1 2 5 2 3 6 3 4 7 4 5 8 >>> d[d[''x'']>2] # This works fine x y 2 3 6 3 4 7 4 5 8 >>> d[d[''x'']>2 & d[''y'']>7] # I had expected this to work, but it doesn''t Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

He encontrado (lo que creo que es) una forma poco elegante de hacerlo, como esta

>>> d[d[''x'']>2][d[''y'']>7]

Pero no es bonito, y su puntuación es bastante baja para la legibilidad (creo).

¿Hay una manera mejor, más Python-tastic?


Es un problema del operador de precedencia.

Debe agregar paréntesis adicionales para hacer que su prueba de condición múltiple funcione:

d[(d[''x'']>2) & (d[''y'']>7)]

Esta sección del tutorial que mencionó muestra un ejemplo con varias condiciones booleanas y se usa el paréntesis.


Todavía puede haber una mejor manera, pero

In [56]: d[d[''x''] > 2] and d[d[''y''] > 7] Out[56]: x y 4 5 8

trabajos.