Obtener el índice de las filas cuya columna coincide con el valor específico en los pandas
- Obtener índices de filas que contengan números enteros/flotaciones en Pandas
- Obtener índices de filas que contengan cadenas en Pandas
Este artículo demuestra cómo obtener el índice de filas que coincide con ciertos criterios en Pandas.
La necesidad de encontrar los índices de las filas es importante en la ingeniería de características. Estas habilidades pueden ser útiles para eliminar los valores atípicos o anormales en un Dataframe. Los índices, también conocidos como etiquetas de filas, pueden encontrarse en los Pandas utilizando varias funciones. En los siguientes ejemplos, trabajaremos en el DataFrame creado utilizando el siguiente fragmento.
import pandas as pd
import numpy as np
np.random.seed(0)
df = pd.DataFrame(np.random.randint(1, 20, size=(20, 4)), columns=list("ABCD"))
print(df)
Resultado:
A B C D
0 13 16 1 4
1 4 8 10 19
2 5 7 13 2
3 7 8 15 18
4 6 14 9 10
5 17 6 16 16
6 1 19 4 18
7 15 8 1 2
8 10 1 11 4
9 12 19 3 1
10 1 5 6 7
11 9 18 16 5
12 10 11 2 2
13 8 10 4 7
14 12 15 19 1
15 15 4 13 11
16 12 5 7 5
17 16 4 13 5
18 9 15 16 4
19 16 14 17 18
Obtener índices de filas que contengan números enteros/flotaciones en Pandas
La función pandas.DataFrame.loc
puede acceder a filas y columnas por sus etiquetas/nombres. Es sencillo devolver las filas que coinciden con la condición booleana dada pasada como etiqueta. Fíjese en los corchetes junto a df.loc
en el recorte.
import pandas as pd
import numpy as np
np.random.seed(0)
df = pd.DataFrame(np.random.randint(1, 20, size=(20, 4)), columns=list("ABCD"))
print(df.loc[df["B"] == 19])
Las filas correspondientes a la condición booleana se devuelven como salida en el formato de un Dataframe.
Resultado:
A B C D
6 1 19 4 18
9 12 19 3 1
Se pueden encadenar múltiples condiciones y aplicarlas juntas a la función, como se muestra a continuación. Esto ayuda a aislar las filas en base a condiciones específicas.
import pandas as pd
import numpy as np
np.random.seed(0)
df = pd.DataFrame(np.random.randint(1, 20, size=(20, 4)), columns=list("ABCD"))
print(df.loc[(df["B"] == 19) | (df["C"] == 19)])
Resultado:
A B C D
6 1 19 4 18
9 12 19 3 1
14 12 15 19 1
Obtener el índice de filas con pandas.DataFrame.index()
Si quieres encontrar sólo los índices coincidentes del dataframe que satisfaga la condición booleana pasada como argumento, pandas.DataFrame.index()
es la forma más fácil de conseguirlo.
import pandas as pd
import numpy as np
np.random.seed(0)
df = pd.DataFrame(np.random.randint(1, 20, size=(20, 4)), columns=list("ABCD"))
print(df.index[df["B"] == 19].tolist())
En el fragmento anterior, las filas de la columna A
que coinciden con la condición booleana == 1
se devuelven como salida como se muestra a continuación.
Resultado:
[6, 9]
La razón por la que ponemos tolist()
detrás del método index()
es para convertir el Index
a la lista; de lo contrario, el resultado es del tipo de datos Int64Index
.
Int64Index([6, 9], dtype='int64'
La recuperación de sólo los índices se puede hacer en base a múltiples condiciones también. El fragmento puede escribirse de la siguiente manera:
import pandas as pd
import numpy as np
np.random.seed(0)
df = pd.DataFrame(np.random.randint(1, 20, size=(20, 4)), columns=list("ABCD"))
print(df.index[(df["B"] == 19) | (df["C"] == 19)].tolist())
Resultado:
[6, 9, 14]
Obtener índices de filas que contengan cadenas en Pandas
Los valores de la cadena pueden ser comparados en base a dos métodos. Los dos métodos mostrados en la sección anterior funcionarán, excepto por el cambio de condición.
En los siguientes ejemplos, utilizaremos el siguiente fragmento.
import pandas as pd
df = pd.DataFrame(
{
"Name": ["blue", "delta", "echo", "charlie", "alpha"],
"Type": ["Raptors", "Raptors", "Raptors", "Raptors", "Tyrannosaurus rex"],
}
)
print(df)
Resultado:
Name Type
0 blue Raptors
1 delta Raptors
2 echo Raptors
3 charlie Raptors
4 alpha Tyrannosaurus rex
Obtener el índice de filas con la coincidencia exacta de la cadena
La condición de igualdad usada en la sección anterior puede ser usada para encontrar la coincidencia exacta de la cadena en el Dataframe. Buscaremos las dos cadenas.
import pandas as pd
df = pd.DataFrame(
{
"Name": ["blue", "delta", "echo", "charlie", "alpha"],
"Type": ["Raptors", "Raptors", "Raptors", "Raptors", "Tyrannosaurus rex"],
}
)
print(df.index[(df["Name"] == "blue")].tolist())
print("\n")
print(df.loc[df["Name"] == "blue"])
print("\n")
print(df.loc[(df["Name"] == "charlie") & (df["Type"] == "Raptors")])
Resultado:
[0]
Name Type
0 blue Raptors
Name Type
3 charlie Raptors
Como se ha visto anteriormente, tanto el índice como las filas que coinciden con la condición pueden ser recibidas.
Obtener el índice de filas con la coincidencia parcial de cadenas
Los valores de la cadena pueden ser parcialmente igualados encadenando el dataframe a la función str.contains
. En el siguiente ejemplo, buscaremos la cadena ha
en charlie y alpha.
import pandas as pd
df = pd.DataFrame(
{
"Name": ["blue", "delta", "echo", "charlie", "alpha"],
"Type": ["Raptors", "Raptors", "Raptors", "Raptors", "Tyrannosaurus rex"],
}
)
print(df.index[df["Name"].str.contains("ha")].tolist())
print("\n")
print(df.loc[df["Name"].str.contains("ha")])
print("\n")
print(df.loc[(df["Name"].str.contains("ha")) & (df["Type"].str.contains("Rex"))])
Resultado:
[3, 4]
Name Type
3 charlie Raptors
4 alpha Tyrannosaurus rex
Name Type
4 alpha Tyrannosaurus rex
Esta función puede ser muy útil para realizar una coincidencia parcial de la cadena a través de múltiples columnas del dataframe.
Artículo relacionado - Pandas DataFrame
- Cómo obtener las cabeceras de columna de Pandas DataFrame como una lista
- Cómo borrar la columna de Pandas DataFrame
- Cómo convertir la columna del DataFrame a Datetime en Pandas
- Cómo convertir un float en un entero en Pandas DataFrame
- Cómo clasificar Pandas DataFrame por los valores de una columna
- Cómo obtener el agregado de Pandas grupo por y suma
Artículo relacionado - Pandas DataFrame Row
- Cómo obtener el recuento de filas de un Pandas DataFrame
- Cómo barajar aleatoriamente filas de DataFrame en Pandas
- Cómo filtrar filas de DataFrames en función de los valores de columna en Pandas
- Cómo iterar a través de filas de un DataFrame en Pandas
- Cómo obtener el índice de todas las filas cuya columna particular satisface la condición dada en Pandas
- Encuentre filas duplicadas en un marco de datos usando Pandas