You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas的df.apply中传递额外参数实现自定义评分?

在Pandas的apply中传递额外参数给自定义函数

嘿,这个问题我之前处理过,其实Pandas的apply方法有好几种简洁的方式来传递额外参数,我给你整理几个常用的方案:

方案1:用lambda匿名函数做中间层

这是最直观的方式,用lambda把遍历到的每个值和额外参数一起传给目标函数:

# 先提前计算好阈值字典
scores = get_score_threshold(pred_df)
# 通过lambda传递scores参数
df['grade'] = df['pred'].apply(lambda x: score_pred(x, scores))

方案2:使用apply自带的args参数

Pandas的apply本身支持args参数,它接受一个元组,里面的元素会作为额外参数依次传给目标函数:

scores = get_score_threshold(pred_df)
# 注意args是元组,单个参数也要加逗号避免被识别为单个值
df['grade'] = df['pred'].apply(score_pred, args=(scores,))

方案3:用functools.partial预先绑定参数

如果这个scores参数会被多次使用,可以用partial预先把参数绑定到函数上,生成一个新的函数再调用:

from functools import partial

scores = get_score_threshold(pred_df)
# 预先把scores绑定到score_pred的第二个参数
scorer = partial(score_pred, scores=scores)
# 直接调用绑定好参数的函数
df['grade'] = df['pred'].apply(scorer)

另外补充下,你的score_pred函数里的分支可以补全得更完整,比如:

def score_pred(pred, scores):
    if pred >= scores['a_thresh']:
        return 'A'
    elif pred >= scores['b_thresh']:
        return 'B'
    elif pred >= scores['c_thresh']:
        return 'C'
    else:
        return 'D'

内容的提问来源于stack exchange,提问作者jasnonaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:30:48