2016-08-29 2 views
1

У меня есть dataframe, который называется family in pandas, который я создал после кода sql. Я сделал все, кроме этой строки. Код SQL является следующимОператор if в python Pandas

SELECT IF(name Is Null, family.last_name, family.first_name) as family.NAME 
from family 

Я попытался следующий

family['NAME']= np.where(family[family.name.isnull()],family.last_name, family.first_name) 

Но я не получаю в любом месте, любая помощь приветствуется. Dataframe выглядит что-то вроде этого

name: first_name: last_name: 
Peter Peter   Smith 
NaN  Phil   McGrath 
Jack  Jack   Jones 
NAN  Fred   Hogan 

Я хочу, чтобы это получить меня новый столбец, который будет выглядеть, как эта функция

NAME: 
Peter 
McGrath 
Jack 
Hogan 
+1

попробовать это: 'np.where (family.name. isnull(), family.last_name, family.first_name) ' – MaxU

+0

вот оно! спасибо Макс, не стесняйтесь добавить это как ответ и плохо проверить его –

ответ

2

numpy.where(condition[, x, y]) ожидает bool значения как condition аргумента:

состояние: array_like, bool

Когда True, выход x, в противном случае выведите y.

так что вы можете сделать это следующим образом:

np.where(family.name.isnull(),family.last_name, family.first_name) 
0

Как MAXU сказал

family['NAME'] = np.where(family.name.isnull(),family.last_name, family.first_name) 

был правильный код

+0

Вы должны [принять] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) Ответ MaxU, а не писать собственную копию :) – IanS