I have a dataframe df, need to create a new column, which is a product of price with metric(int calculated before).
df['cost'] = df['price'] * metric if (df['status'] == 'online')
df['cost'] = 0 if df['status'] == 'offline'
We can leverage the point that True is 1 and False is 0 when used in multiplication.
3 * True -> 3
3 * False -> 0
We have to check if values are equal to online in the status column.
df['cost'] = df['price'] * df['status'].eq('online') * metric
Wherever, status is offline cost value is 0.
The above solution relies on the fact you want to set offline values to 0. If you want to set offline to let's 999. Then we can use Series.where here.
df['cost'] = df['price'].mul(metric).where(df['status'].eq('online'), 999)
Now, every offline value to set to 999.
Useful links:
Series.whereSeries.eqSeries.mulIf you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With