📜  pandas numpy multiplicar dos columnas segun una condicion - Python (1)

📅  最后修改于: 2023-12-03 15:18:13.985000             🧑  作者: Mango

Pandas y NumPy: Multiplicar dos columnas según una condición

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.