2015-09-07 2 views
2

Я пытаюсь создать простую инструкцию if в Pandas.Pandas If Statementments (excel analog)

версия первенствует выглядит следующим образом:

= IF (E2 = "ABC", C2, E2)

я застрял на том, чтобы назначить его на основе строки или частичной строки.

Вот что у меня есть.

Я знаю, что делаю ошибку здесь.

В результате все значения данных в каждой ячейке.

Любая помощь была бы высоко оценена!

ответ

3

использование np.where:

In [36]: 
df = pd.DataFrame({'A':np.random.randn(5), 'B':0, 'C':np.arange(5),'D':1, 'E':['asdsa','ABC','DEF','ABC','DAS']}) 
df 

Out[36]: 
      A B C D  E 
0 0.831728 0 0 1 asdsa 
1 0.734007 0 1 1 ABC 
2 -1.032752 0 2 1 DEF 
3 1.414198 0 3 1 ABC 
4 1.042621 0 4 1 DAS 

In [37]:  
df['New Value'] = np.where(df['E'] == 'ABC', df['C'], df['E']) 
df 

Out[37]: 
      A B C D  E New Value 
0 0.831728 0 0 1 asdsa  asdsa 
1 0.734007 0 1 1 ABC   1 
2 -1.032752 0 2 1 DEF  DEF 
3 1.414198 0 3 1 ABC   3 
4 1.042621 0 4 1 DAS  DAS 

Синтаксис np.where является:

np.where(<condition>, True condition, False condition) 

Итак, когда условие True возвращает истинное состояние и когда False другое условие.

+0

Это потрясающе! Спасибо, это работает. – Kvothe

+0

Извините, что вы можете добавить это. Как получить строку или функцию? например. «ABC» или «CBA»? – Kvothe

+0

Если у вас есть новый вопрос, задайте новый вопрос, если он не очень мал – EdChum