我有一个数据帧:
a b c
0 nan Y nan
1 23 N 3
2 nan N 2
3 44 Y nan
Run Code Online (Sandbox Code Playgroud)
我希望得到这样的结果:
a b c d
0 nan Y nan nan
1 23 N 3 96
2 nan N 2 nan
3 44 Y nan 44
Run Code Online (Sandbox Code Playgroud)
我希望有一个条件,当列a为空时,如果列b为N且列c不为null则d为空,则列d等于列a*列c否则列d等于列a
我已经完成了这段代码,但是我得到了错误:
def f4(row):
if row['a']==np.nan:
return np.nan
elif row['b']=="N" & row(row['c'].notnull()):
return row['a']*row['c']
else:
return row['a']
DF['P1']=DF.apply(f4,axis=1)
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我指出我的错误在哪里?我已经参考了这个并尝试了这个,但也得到错误基于if-elif-else条件创建一个新列