Создать новый столбец на основе значения другого столбца - PullRequest
0 голосов
/ 18 июня 2020

У меня есть фрейм данных:

 id|concept    |description
 12|           |rewards member
 12|tier one   |
 12|not avail  |rewards member

ЦЕЛЬ: создать новый столбец final_desc с содержимым в столбце concept или description

Всего 4 возможный сценарий ios:

  1. В столбце concept есть значение, а не в description, где final_desc - это значение в concept

  2. В столбце description есть значение, а не в concept, где final_desc - это значение в description

  3. Значение в столбце concept - не доступно , где final_desc - это значение в description

  4. И concept, и * 1039. * столбец пуст, в котором final_desc пуст

Я пробовал использовать оператор where, но он не учитывает сценарий 3.

df['final_desc'] = np.where(df['concept'].isnull(), df['description'], df['concept'])

Я думаю Мне нужна настраиваемая функция, но я не уверен, как писать для работы по столбцам

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Это может помочь:

df['final_desc'] = df.concept.replace('not avail',np.nan).fillna(df.description).fillna(df.concept.replace('not avail',np.nan))
0 голосов
/ 18 июня 2020

Вы можете объединить replace и ffill/bfill:

df['final_desc'] = (df[['concept','description']].replace('not avail',np.nan)
                     .bfill(1)['concept']
                   )

Вывод:

   id    concept     description      final_desc
0  12        NaN  rewards member  rewards member
1  12   tier one             NaN        tier one
2  12  not avail  rewards member  rewards member
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...