根据条件填充NaN缺失数据

3

我的代码看起来像这样:

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()应用它,但它没有成功。非常感谢您的启示!

编辑:我已经在这里找到了我的问题的解决方案-链接

2个回答

4

这是一种按元素操作的方法,您可以向量化此操作。使用np.where构建一个数组,并将其传递给fillna函数。

df['VAL'] = df['VAL'].fillna(np.where(df['FLAG'], median, 0))

嗯,很奇怪,因为我收到了类型错误,其中值参数必须是Scala、字典或系列,但你传递了一个ndarray。 - Arnechos

1
你可能可以做到这一点。
 df.loc[df['VAL'].isna(),'Val']=df['FLAG']*median

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接