pandas 中的两个条件乘法
two conditions multiplication in pandas
我有以下数据框,我正在尝试通过 columnA 或 columnB 与 columnC 之间的乘法来获得收入列。
条件是:
- 如果 columnB 为 NaN,则收入列 = columnA * columnC
- 如果 columnB 不是 NaN,则收入列 = 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
我有以下数据框,我正在尝试通过 columnA 或 columnB 与 columnC 之间的乘法来获得收入列。
条件是:
- 如果 columnB 为 NaN,则收入列 = columnA * columnC
- 如果 columnB 不是 NaN,则收入列 = 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