Multiplica Columnas por un Escalar en Pandas

Olorunfemi Akinlua 21 junio 2023
  1. Use la asignación en el lugar para multiplicar columnas por un escalar en Pandas
  2. Use la función multiplicar para multiplicar columnas por un escalar en Pandas
  3. Use la función aplicar para multiplicar columnas por un escalar en Pandas
  4. Usa el Operador loc para Multiplicar Columnas por un Escalar en Pandas
  5. Usa el Operador iloc para Multiplicar Columnas por un Escalar en Pandas
Multiplica Columnas por un Escalar en Pandas

Usamos Pandas para muchas operaciones de marcos de datos, desde completar datos hasta limpiar dichos datos. El marco de datos de Pandas ofrece métodos para datos y operaciones matemáticas usando Python.

Diferentes operaciones matemáticas pueden parecer menos intuitivas de realizar, pero con Python, son mucho más fáciles de lo que piensas. Una de esas operaciones es multiplicar las columnas de Pandas por valores escalares.

Este artículo mostrará cinco formas de multiplicar columnas por un escalar en Pandas dentro de diferentes complejidades.

Use la asignación en el lugar para multiplicar columnas por un escalar en Pandas

Antes de analizar cómo abordar la multiplicación de columnas por valores escalares en pandas mediante la asignación en el lugar, mostremos lo que pretendemos lograr.

Tenemos un marco de datos con siete columnas.

marco de datos con siete columnas

Ahora, queremos multiplicar una columna (uno) por un valor escalar (5).

marco de datos multiplicado con siete columnas

Entonces, ¿cómo logramos eso? El primer enfoque es utilizar la asignación en el lugar, una operación en la que, además de asignar un valor, operamos sobre el valor.

Usando la asignación en el lugar, sobrescribimos el valor de la primera variable del operando con el resultado de la operación realizada en el valor del operando. Visualmente, x *= 3 es equivalente a x = x * 3 donde el valor que tiene la variable x se multiplica por 3 y luego se asigna a la misma variable x.

Para ilustrar esto, podemos crear un marco de datos de Pandas de 6 filas y 7 columnas pobladas con “unos” que asignan nombres de columna y realizan la asignación en el lugar en la columna “uno”.

import pandas as pd
import numpy as np

df = pd.DataFrame(
    np.ones((6, 7)), columns=["one", "two", "three", "four", "five", "six", "seven"]
)

print(df)

Producción :

one  two  three  four  five  six  seven
0  1.0  1.0    1.0   1.0   1.0  1.0    1.0
1  1.0  1.0    1.0   1.0   1.0  1.0    1.0
2  1.0  1.0    1.0   1.0   1.0  1.0    1.0
3  1.0  1.0    1.0   1.0   1.0  1.0    1.0
4  1.0  1.0    1.0   1.0   1.0  1.0    1.0
5  1.0  1.0    1.0   1.0   1.0  1.0    1.0

Para usar la asignación en el lugar, tenemos que seleccionar la columna Pandas que queremos multiplicar por el valor escalar usando la notación de puntos o la notación de corchetes. Usando la notación de corchetes, seleccionamos la columna uno.

df["one"] *= 5

print(df)

Producción :

one  two  three  four  five  six  seven
0  5.0  1.0    1.0   1.0   1.0  1.0    1.0
1  5.0  1.0    1.0   1.0   1.0  1.0    1.0
2  5.0  1.0    1.0   1.0   1.0  1.0    1.0
3  5.0  1.0    1.0   1.0   1.0  1.0    1.0
4  5.0  1.0    1.0   1.0   1.0  1.0    1.0
5  5.0  1.0    1.0   1.0   1.0  1.0    1.0

Como puedes ver, la columna uno se ha multiplicado por el valor escalar (5).

Use la función multiplicar para multiplicar columnas por un escalar en Pandas

En lugar de usar el operador de multiplicación en un enfoque de asignación en el lugar, puede usar el método multiplicar proporcionado por Pandas. Aplicamos el método en la columna que queramos y pasamos el valor escalar como argumento para el método multiplicar.

Para mostrar el método multiplicar, multiplicaremos la columna dos por el valor escalar de 7 (accediendo a la columna dos usando la notación de puntos).

df.two = df.two.multiply(7)
print(df)

Producción :

one  two  three  four  five  six  seven
0  5.0  7.0    1.0   1.0   1.0  1.0    1.0
1  5.0  7.0    1.0   1.0   1.0  1.0    1.0
2  5.0  7.0    1.0   1.0   1.0  1.0    1.0
3  5.0  7.0    1.0   1.0   1.0  1.0    1.0
4  5.0  7.0    1.0   1.0   1.0  1.0    1.0
5  5.0  7.0    1.0   1.0   1.0  1.0    1.0

Use la función aplicar para multiplicar columnas por un escalar en Pandas

Similar a cómo usamos el método multiplicar, podemos usar el método aplicar, una función de orden superior, para multiplicar columnas por un escalar en Pandas. El método aplicar toma una función lambda que realizará una acción sobre los elementos de la celda de la columna sobre la que se aplica.

Entonces, podemos especificar una acción de multiplicación en el elemento de la celda usando la función lambda.

Para ilustrar cómo funciona esto, multiplicaremos la columna “tres” (del marco de datos utilizado en secciones anteriores) por 9 usando el método “aplicar”.

df["three"] = df["three"].apply(lambda x: x * 9)
print(df)

Producción :

one  two  three  four  five  six  seven
0  5.0  7.0    9.0   1.0   1.0  1.0    1.0
1  5.0  7.0    9.0   1.0   1.0  1.0    1.0
2  5.0  7.0    9.0   1.0   1.0  1.0    1.0
3  5.0  7.0    9.0   1.0   1.0  1.0    1.0
4  5.0  7.0    9.0   1.0   1.0  1.0    1.0
5  5.0  7.0    9.0   1.0   1.0  1.0    1.0

Puede ver que todas las celdas en la columna tres se han multiplicado por 9 según la función lambda. Este enfoque puede parecer estresante, pero puede ser más funcional cuando el valor que queremos multiplicar la columna puede variar según la celda.

Usa el Operador loc para Multiplicar Columnas por un Escalar en Pandas

Además, podemos usar el operador loc para multiplicar la columna por un escalar en Pandas. Con el operador loc, podemos indexar una parte de un marco de datos.

Podemos indexar en base a filas y columnas. Para nosotros, necesitamos indexar según la columna que necesitamos.

La sintaxis típica del operador loc se muestra a continuación.

DataFrame.loc[rows, columns]

Sin embargo, para que podamos acceder solo a la columna, podemos usar la siguiente sintaxis.

DataFrame.loc[:, columns]

El : indica que quiere todas las filas. En conjunto, la sintaxis anterior significa acceder a todas las filas en la columna especificada.

Ahora, usaremos la sintaxis anterior para obtener la columna “cuatro” y usaremos la asignación en el lugar para multiplicar los valores por 11.

df.loc[:, "four"] *= 11
print(df)

Producción :

one  two  three   four  five  six  seven
0  5.0  7.0    9.0  11.0   1.0  1.0   1.0
1  5.0  7.0    9.0  11.0   1.0  1.0   1.0
2  5.0  7.0    9.0  11.0   1.0  1.0   1.0
3  5.0  7.0    9.0  11.0   1.0  1.0   1.0
4  5.0  7.0    9.0  11.0   1.0  1.0   1.0
5  5.0  7.0    9.0  11.0   1.0  1.0   1.0

Esto parece innecesariamente largo, pero este enfoque es funcional si queremos multiplicar varias columnas. Por ejemplo, si queremos multiplicar las columnas cinco y seis por 13, pasaremos una lista con los nombres de la columna como segundo argumento al operador loc.

df.loc[:, ["five", "six"]] *= 13
print(df)

Producción :

one  two  three  four  five   six  seven
0  5.0  7.0    9.0  11.0  13.0  13.0    1.0
1  5.0  7.0    9.0  11.0  13.0  13.0    1.0
2  5.0  7.0    9.0  11.0  13.0  13.0    1.0
3  5.0  7.0    9.0  11.0  13.0  13.0    1.0
4  5.0  7.0    9.0  11.0  13.0  13.0    1.0
5  5.0  7.0    9.0  11.0  13.0  13.0    1.0

Usa el Operador iloc para Multiplicar Columnas por un Escalar en Pandas

Similar al operador loc, acepta solo valores enteros como índice de los valores a los que pretendemos acceder. A diferencia de loc, donde podemos usar el nombre de la columna, usamos el valor del índice de la columna.

Además, recuerda que el índice empieza en 0 y no en 1. Por tanto, si queremos acceder a la columna siete y multiplicar por 15, utilizaremos el valor del índice 6.

df.iloc[:, 6] = df.iloc[:, 6] * 15
print(df)

Producción :

one  two  three  four  five   six  seven
0  5.0  7.0    9.0  11.0  13.0  13.0   15.0
1  5.0  7.0    9.0  11.0  13.0  13.0   15.0
2  5.0  7.0    9.0  11.0  13.0  13.0   15.0
3  5.0  7.0    9.0  11.0  13.0  13.0   15.0
4  5.0  7.0    9.0  11.0  13.0  13.0   15.0
5  5.0  7.0    9.0  11.0  13.0  13.0   15.0
Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

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

Artículo relacionado - Pandas DataFrame Column