Управление потоком If / Else в кадре данных панд - PullRequest
0 голосов
/ 05 мая 2018

Я новичок в python и работаю над логическим утверждением. Моя цель - подсчитать счет команды по командам. (то есть, если команда забила гол, я назначу 1, а противнику - -1). Ниже приведен снимок данных. Данные ниже

Я написал логическое утверждение следующим образом:

if data['team']== data['hometeam_team1']:
   data['run_score'] = 1
else:
    data['run_score'] = -1

но это выкинуло мне значение ошибки:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

Кто-нибудь может посоветовать? Ваша помощь очень ценится. Спасибо Аун

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Преимущество использования panda - векторизованные вычисления. Другими словами, очень редко необходимо использовать явные циклы for или if / else для выполнения вычисления в каждой строке.

Вместо этого вы можете выполнять вычисления на pd.Series объектах. В этом примере одним из эффективных решений является использование numpy.where, которое действует как векторизованное предложение if / else:

import numpy as np

data['run_score'] = np.where(data['team']== data['hometeam_team1'], 1, -1)
0 голосов
/ 05 мая 2018

Я не уверен, что это сработает, так как вы не предоставили никаких данных. Но это общие рамки, используемые для решения такой проблемы. Вы можете использовать функцию apply здесь.

data['run_score'] = data.apply(lambda row: 1 if row['team'] == row['hometeam_team1'] else -1, axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...