在Python中创建了一个函数,我知道它本身可以工作,但希望使用它来迭代和计算列



已经创建了下面的函数,当我向它传递值时,它确实有效,我想用它来计算数据帧中新创建的列。但是在添加new_column时,我不知道在'='后面放什么。

def home_team(home_odds,draw_odds,away_odds, full_time_result):
if full_time_result == 'H':
return 2 - home_odds
elif full_time_result == 'D':
return 3 - draw_odds
elif full_time_result == 'A':
return 1 - away_odds
end

df['new_column'] = 

您应该更改您的函数,使其能够应用于每一行。

此函数应具有一个参数,例如

对当前行的字段的引用应具有如下形式row.column_name.

因此您的功能可以更改,例如:

def home_team(row):
if row.full_time_result == 'H':
return 2 - row.home_odds
elif row.full_time_result == 'D':
return 3 - row.draw_odds
elif row.full_time_result == 'A':
return 1 - row.away_odds

(不需要代码示例中的最后结束(。

然后将此函数应用于每一行,并将结果保存为新列:

df['new_column'] = df.apply(home_team, axis=1)

为了测试这个代码,我创建了以下DataFrame:

home_odds  draw_odds  away_odds full_time_result
0        0.5        0.4        0.1                H
1        0.2        0.6        0.2                D
2        0.1        0.3        0.6                A

应用上述函数后,结果为:

home_odds  draw_odds  away_odds full_time_result  new_column
0        0.5        0.4        0.1                H         1.5
1        0.2        0.6        0.2                D         2.4
2        0.1        0.3        0.6                A         0.4

如果列名与上例不同,请更改列相应地在函数中命名。

相关内容

最新更新