python - 为现有值中的新值列创建循环

标签 python python-3.x pandas dataframe for-loop

我希望在数据框中创建一个新列,指示比赛以主场胜利、客场胜利还是平局结束。

这是我当前使用的代码:

for value in df2:
    if value in df2['home_goals'] > df2['away_goals']:
        df2['result'] = 'H'
    elif value in df2['home_goals'] < df2['away_goals']:
        df2['result'] = 'A'
    else:
        df2['result'] = 'D'

这是输出。

              Home Team       Away Team home_goals away_goals result
Season                                                              
2018-2019       Man Utd       Leicester          2          1      D
2018-2019     Newcastle           Spurs          1          2      D
2018-2019   Bournemouth         Cardiff          2          0      D
2018-2019        Fulham  Crystal Palace          0          2      D
2018-2019  Huddersfield         Chelsea          0          3      D

正如您所看到的,在这种情况下,所有结果都显示为平局,而不是显示主队或客队获胜。

有人可以告诉我我哪里出了问题吗?

谢谢

最佳答案

一种Python式的方法可能是,

import numpy as np

df2['result'] = np.where(df2['home_goals'] > df2['away_goals'], 'H', 
                         np.where(df2['home_goals'] < df2['away_goals'], 'A', 'D'))

使用链式np.where()命令。

关于python - 为现有值中的新值列创建循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65457544/

相关文章:

python - 多级 Pandas 数据框中的自定义排序列

Python-AF_BLUETOOTH

python - 如何从多处理队列继承?

python - 创建了新的 python 类型但 PyGetSetDef 核心转储

python - 将 str 中的索引转换为 bytearray 中的索引

python - 如何将 dataframe pandas 中的 0 替换为 null 值?

python - Pandas 根据列 dtypes 进行应用

python - 通过数组值和数组值相关操作进行数组索引

python - 如何使用 python3 在 "horizontal union"中加入两个 pandas DataFrame

python - 计算一列中有多少个字符出现在另一列中( Pandas )