首页 > 解决方案 > 如何使用条件语句创建包含计算值的新列

问题描述

语境:

  1. 我有一个关于足球比赛统计数据的数据框
  2. 此数据框缺少有关比赛结果的信息
  3. 因此,我正在尝试创建一个列,让我知道比赛结果是“赢”还是“输”
  4. 数据框包含主客队进球数
  5. 当主队进球多于客队进球时,我正在尝试用“赢”填充新列
  6. 您可以在下面的代码中看到我试图创建的新列称为“结果”

下面的工作代码应该让我了解我正在尝试做的事情,并且做错了......

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().

标签: pythonpython-3.xpandasif-statement

解决方案


要编辑您的尝试:

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") )

推荐阅读