我有以下数据帧,我正试图通过a列或B列与C列的乘积来获得收入列。
条件是:
- 如果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