Как вернуть значение (число), если pandas содержит условие true? - PullRequest
0 голосов
/ 12 октября 2018

Как я могу индивидуально вернуть значение, если условие содержит истину?

searchfor = ['dormant', 'open']]
flag_one = []
flag_one = data['Status'].str.contains('|'.join(searchfor), na=False)

Прямо сейчас возвращается «Истина», если найдено, или «Ложь», если не найдено.Как я могу присвоить (числовое) значение "True" и "False"?

Ответы [ 4 ]

0 голосов
/ 12 октября 2018

Использование map

data['Status'].str.contains('|'.join(searchfor), na=False).map({True:111,False:222})
0 голосов
/ 12 октября 2018

Просто переназначьте flag_one после оценки вашего состояния:

if flag_one:
    flag_one = 3 # or any value you want for True
else:
    flag_one = 34 # or any value you want for False

Или вы можете перейти к источникам функции contains и изменить ее, но я не рекомендую ее.

0 голосов
/ 12 октября 2018

Использовать numpy.where:

searchfor = ['dormant', 'open']
x = 10
y = 20
data['new_column'] = numpy.where(data['Status'].isin(searchfor),x,y)

new_column будет содержать 10, когда в состоянии покоя или открытия будет найдено, в противном случае он будет содержать 20.

0 голосов
/ 12 октября 2018

Я думаю, что вы хотите, чтобы вы

if data['Status'].str.contains('|'.join(searchfor), na=False):
   flag_one = 1.0
else:
   flag_one = -1.0
...