根据多个条件替换多个值

我想用两个不同列中的另外两个值替换两个不同列中的两个值。例:

I want to replace all values that are null in column value where the value in column variable is name and the source is a. Also, I want to keep the source of the replace value.

variable | value    | source
name       np.NaN     a
name       John       b
email      qq@g.com   a
....       ....      ....

预期产量:

variable | value    | source
name       John       b
name       John       b
email      qq@g.com   a
....       ....      ....

然后我将删除重复项。我试图用np.where做到这一点,但没有成功。 我不知道该如何做多个条件和多个替换。

df['name'] = np.where(df['variable'] == 'name' and df['source'] == 'a' and df['value'].isnull(), ...) 

也许有更优雅的方法可以做到这一点。另外,性能越快越好。

评论
  • 王八蛋
    王八蛋 回复

    如果我很好理解,这是一个解决方案:

    df[(df['variable'] =!'name') | (~df['value'].isna()) | (df['source'] =! 'a')]