Панды заменяют значения на основе другого столбца - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть фрейм данных, который выглядит следующим образом:

col1 col2
Yes  23123
No   23423423
Yes  34234
No   13213

Я хочу заменить значения в col2 так, чтобы, если «Да» в col1, возвращалось пустое значение, а если «Нет», возвращалось начальное значение

Я хочу увидеть это:

 col1 col2
 Yes  
 No   23423423
 Yes  
 No   13213

Я пробовал это, но «Нет» возвращает None:

   def map_value(x): 
      if x in ['Yes']:
         return ''
      else:
         return None

   df['col2'] = df['col1'].apply(map_value)

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Создано df путем копирования примеров данных из поста ОП и использования следующей команды:

df=pd.read_clipboard();
df
   col1  col2
0  Yes   23123 
1  No    23423423 
2  Yes   34234 
3  No    13213 

Не могли бы вы попробовать следующее.

m=df['col1']=='No'
df['col2']=df['col2'].where(m,'')
df

После запуска вывода кода будет какследует:

  col1 col2
0 Yes
1 No   23423423 
2 Yes  
3 No   13213 
0 голосов
/ 03 декабря 2018

Есть много способов сделать это, один из них

df.loc[df.col1 == 'Yes', 'col2'] = ''

Вывод:

col1 col2
Yes  
No   23423423
Yes  
No   13213
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...