我的代码如下:
if df['FLAG'] == 1:
df['VAL'] = df['VAL'].fillna(median)
elif df['FLAG'] == 0:
df['VAL'] = df['VAL'].fillna(0)
哪个返回-DataFrame的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。
我尝试过做一个面具,然后用a.all()应用它,但是没有成功。我非常感谢您的启发!
编辑:我已经在这里解决了我的问题-Link
答案 0 :(得分:4)
这是元素操作,您可以将其向量化。用np.where
构建一个数组,并将其传递给fillna
。
df['VAL'] = df['VAL'].fillna(np.where(df['FLAG'], median, 0))
答案 1 :(得分:1)
您可以这样做
df.loc[df['VAL'].isna(),'Val']=df['FLAG']*median