Explotar varias columnas en Pandas
-
Use la función
explotar ()
para explotar varias columnas en Pandas -
Use
Series.explode
para explotar múltiples columnas en Pandas
Los datos a los que tenemos acceso pueden contener diferentes tipos de datos, desde cadenas hasta matrices o listas. Por lo general, preferimos números (enteros y flotantes) y cadenas, ya que son más fáciles de manipular.
Si tenemos una lista dentro de las celdas de nuestro marco de datos, ¿cómo trabajamos con ellas? Podemos usar la función explotar()
con la biblioteca de Pandas, que se explicará en este tema.
Use la función explotar ()
para explotar varias columnas en Pandas
Con la función explotar ()
, las celdas del marco de datos con elementos de lista se transforman en filas mientras se replican los valores del índice y se devuelve un marco de datos con las listas expandidas. Antes de usar la función explotar()
, creemos un marco de datos que contenga elementos de lista.
Ejemplo de código:
import pandas as pd
import numpy as np
df = pd.DataFrame(
{
"A": ["1", "2", "3", "4"],
"B": [["11", "12"], ["13", "14"], ["15", "16"], ["17", "18"]],
"C": [["31", "32"], ["33", "43"], ["56", "67"], ["78", "87"]],
"D": [["41", "42"], ["34", "47"], ["55", "66"], ["77", "88"]],
"E": [["51", "52"], ["35", "45"], ["56", "76"], ["97", "68"]],
}
)
print(df)
Producción :
A B C D E
0 1 [11, 12] [31, 32] [41, 42] [51, 52]
1 2 [13, 14] [33, 43] [34, 47] [35, 45]
2 3 [15, 16] [56, 67] [55, 66] [56, 76]
3 4 [17, 18] [78, 87] [77, 88] [97, 68]
Para explotar el Dataframe, debemos pasar la columna
que necesitamos explotar. Podemos explotar varias columnas, pero comencemos con una columna: B
.
print(df.explode("B"))
Producción :
A B C D E
0 1 11 [31, 32] [41, 42] [51, 52]
0 1 12 [31, 32] [41, 42] [51, 52]
1 2 13 [33, 43] [34, 47] [35, 45]
1 2 14 [33, 43] [34, 47] [35, 45]
2 3 15 [56, 67] [55, 66] [56, 76]
2 3 16 [56, 67] [55, 66] [56, 76]
3 4 17 [78, 87] [77, 88] [97, 68]
3 4 18 [78, 87] [77, 88] [97, 68]
Como puede ver, replica los índices y separa los elementos de la lista para tener su celda. Si no queremos usar los índices originales, podemos reemplazarlos con nuevos índices usando el parámetro ignore_index
.
Al establecerlo en True
, reemplazamos los índices originales por otros nuevos.
A B C D E
0 1 11 [31, 32] [41, 42] [51, 52]
1 1 12 [31, 32] [41, 42] [51, 52]
2 2 13 [33, 43] [34, 47] [35, 45]
3 2 14 [33, 43] [34, 47] [35, 45]
4 3 15 [56, 67] [55, 66] [56, 76]
5 3 16 [56, 67] [55, 66] [56, 76]
6 4 17 [78, 87] [77, 88] [97, 68]
7 4 18 [78, 87] [77, 88] [97, 68]
También podemos explotar el marco de datos en función de varias columnas.
print(df.explode(["B", "C", "D", "E"], ignore_index=True))
Producción :
A B C D E
0 1 11 31 41 51
1 1 12 32 42 52
2 2 13 33 34 35
3 2 14 43 47 45
4 3 15 56 55 56
5 3 16 67 66 76
6 4 17 78 77 97
7 4 18 87 88 68
Use Series.explode
para explotar múltiples columnas en Pandas
La función Series.explode
hace lo mismo que la función pandas explode()
, y podemos hacer uso de la función apply()
junto con la función para explotar todo el marco de datos. Podemos establecer el índice en función de una columna y aplicar la función explotar ()
, luego restablecer el índice usando la función reset_index()
.
print(df.set_index(["A"]).apply(pd.Series.explode).reset_index())
Producción :
A B C D E
0 1 11 31 41 51
1 1 12 32 42 52
2 2 13 33 34 35
3 2 14 43 47 45
4 3 15 56 55 56
5 3 16 67 66 76
6 4 17 78 77 97
7 4 18 87 88 68
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedIn