Заполнение NaN данными на основе условия - PullRequest
0 голосов
/ 30 августа 2018

Мой код выглядит так:

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 ]

0 голосов
/ 30 августа 2018

Вы можете сделать это

 df.loc[df['VAL'].isna(),'Val']=df['FLAG']*median
0 голосов
/ 30 августа 2018

Это поэлементная операция, и вы можете векторизовать ее. Создайте массив с np.where и передайте его fillna.

df['VAL'] = df['VAL'].fillna(np.where(df['FLAG'], median, 0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...