pandas 中的两个条件乘法

two conditions multiplication in pandas

我有以下数据框,我正在尝试通过 columnA 或 columnB 与 columnC 之间的乘法来获得收入列。

条件是:

type   columnA     columnB     columnC
1        23          NaN          2
2        14          35           3
3        11          NaN          4
4        29          12           5

如何在 python 中获得具有这两个条件的收入列?提前致谢。

首先,您可以使用 .isnull().values.any() 检查 columnB 是否包含任何 NaN 值,然后应用 if else 条件以获得所需的 revenue 列。

你可以这样做:

df['revenue'] = df['columnA'] * df['columnC'] if df['columnB'].isnull().values.any() else df['columnB'] * df['columnC']

输出:

   type  columnA  columnB  columnC  revenue
0     1       23      NaN        2       46
1     2       14     35.0        3       42
2     3       11      NaN        4       44
3     4       29     12.0        5      145

使用np.where

import numpy as np


df['revenue'] = np.where(df['columnB'].isna(), df['columnA'] * df['columnC'], df['columnB'] * df['columnC'])
   type  columnA  columnB  columnC  revenue
0     1       23      NaN        2     46.0
1     2       14     35.0        3    105.0
2     3       11      NaN        4     44.0
3     4       29     12.0        5     60.0