python - seleccionar - Pandas: verifica si existe una fila con ciertos valores
seleccionar columnas de un dataframe python (3)
Tengo un DataFrame de pandas bidimensional (o más) como este:
>>> import pandas as pd
>>> df = pd.DataFrame([[0,1],[2,3],[4,5]], columns=[''A'', ''B''])
>>> df
A B
0 0 1
1 2 3
2 4 5
Ahora suponga que tengo una matriz numpy como np.array([2,3])
y quiero verificar si hay alguna fila en df
que coincida con el contenido de mi matriz. Aquí la respuesta debería ser obviamente verdadera, pero por ejemplo. np.array([1,2])
debe devolver falso ya que no hay una fila con 1 en la columna A y 2 en la columna B.
Claro que esto es fácil pero no lo veo ahora mismo.
Resulta que es muy fácil, lo siguiente hace el trabajo aquí:
>>> ((df[''A''] == 2) & (df[''B''] == 3)).any()
True
>>> ((df[''A''] == 1) & (df[''B''] == 2)).any()
False
Tal vez alguien encuentre una mejor solución que permita pasar directamente la matriz y la lista de columnas para que coincidan.
Tenga en cuenta que los paréntesis alrededor de df[''A''] == 2
no son opcionales, ya que el operador &
une con la misma fuerza que el operador ==
.
Si también desea devolver el índice donde ocurrieron las coincidencias:
index_list = df[(df[''A''] == 2)&(df[''B''] == 3)].index.tolist()
Una forma más fácil es:
a = np.array([2,3])
(df == a).all(1).any()