📅  最后修改于: 2023-12-03 15:18:13.985000             🧑  作者: Mango
En este tutorial, veremos cómo multiplicar dos columnas en un DataFrame de Pandas según una condición utilizando NumPy.
Supongamos que tenemos el siguiente DataFrame:
import pandas as pd
data = {'A': [4, 5, 6, 7, 8],
'B': [10, 20, 30, 40, 50],
'C': [False, True, False, True, False]}
df = pd.DataFrame(data)
| | A | B | C | |---:|---|---:|------:| | 0 | 4 | 10 | False | | 1 | 5 | 20 | True | | 2 | 6 | 30 | False | | 3 | 7 | 40 | True | | 4 | 8 | 50 | False |
Queremos multiplicar las columnas 'A' y 'B' solo si el valor en la columna 'C' es True.
Primero, debemos convertir la columna 'C' en una matriz booleana NumPy para que podamos usarla como una máscara en la multiplicación. Podemos hacerlo de la siguiente manera:
import numpy as np
mask = np.array(df['C'])
Ahora, podemos multiplicar las columnas 'A' y 'B' solo donde la máscara es True utilizando la función where de NumPy:
result_array = np.where(mask, df['A'] * df['B'], 0)
La función where toma tres argumentos: la máscara, el valor a tomar si la máscara es True y el valor a tomar de lo contrario.
Hasta ahora, hemos creado una matriz NumPy que contiene los resultados de nuestra multiplicación, pero aún no hemos agregado esta matriz a nuestro DataFrame de Pandas.
Podemos agregar la matriz como una nueva columna en nuestro DataFrame así:
df['result'] = result_array
El DataFrame resultante debería verse así:
| | A | B | C | result | |---:|---|---:|------:|-------:| | 0 | 4 | 10 | False | 0 | | 1 | 5 | 20 | True | 100 | | 2 | 6 | 30 | False | 0 | | 3 | 7 | 40 | True | 280 | | 4 | 8 | 50 | False | 0 |
Hemos agregado una nueva columna llamada 'result' que contiene los resultados de nuestra multiplicación solo donde la columna 'C' es True.
¡Y eso es todo! En este tutorial, hemos mostrado cómo multiplicar dos columnas en un DataFrame de Pandas según una condición utilizando NumPy.