Как создать новый столбец, содержащий вычисляемые значения с условными выражениями в игре - PullRequest
1 голос
/ 20 мая 2019

Контекст:

  1. У меня есть данные по статистике футбольных матчей
  2. На этом информационном кадре отсутствует информация о результатах матча
  3. Следовательно, я пытаюсь создать столбец, который позволяет мне узнать, является ли результат матча победой или поражением.
  4. Датафрейм содержит цели, забитые командами хозяев и гостей
  5. Я пытаюсь заполнить новый столбец "Выиграть", когда голы за ворота превышают голы на выезде
  6. Вы можете видеть в моем коде ниже, что новый столбец, который я пытался создать, называется "result"

Рабочий код, приведенный ниже, должен дать представление о том, что я пытаюсь сделать, и делаю неправильно ...

for index, row in match_df.iterrows():
    if match_df.home_team_goal > match_df.away_team_goal:
        match_df.loc[index, "outcome"] = "Win"
    else:
        match_df.loc[index, "outcome"] = "Lose"

Сообщение об ошибке:

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

Ответы [ 3 ]

0 голосов
/ 20 мая 2019

Вы также можете использовать ниже:

match_df['outcome'] = 'Win'
match_df.loc[match_df.home_team_goal < match_df.away_team_goal, 'outcome'] = 'Lose'

А теперь:

print(match_df)

Будет как ожидалось.

0 голосов
/ 20 мая 2019

Чтобы изменить вашу попытку:

for index, row in match_df.iterrows():
    if row['home_team_goal'] > row['away_team_goal']:
        match_df.loc[index, "outcome"] = "Win"
    else:
        match_df.loc[index, "outcome"] = "Lose"

Или используйте код ниже для быстрых результатов:

df.outcome.fillna(np.where(df.home_team_goal > df.away_team_goal, "Win", "Lose") )
0 голосов
/ 20 мая 2019

Вы должны стараться не использовать цикл for, когда вы используете pandas: np.where

import pandas as pd; import numpy as np

match_df['outcome']=np.where(match_df.home_team_goal > match_df.away_team_goal,'win','lose')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...