已经创建了下面的函数,当我向它传递值时,它确实有效,我想用它来计算数据帧中新创建的列。但是在添加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
如果列名与上例不同,请更改列相应地在函数中命名。