如何将pandas apply方法内的lambda函数改写为普通自定义函数
错误原因分析
- 混淆了
df.apply()的遍历逻辑:指定axis=1时apply会自动逐行遍历DataFrame,不需要额外手写for循环 - 传参逻辑完全错误:原有lambda的入参是单条行数据
x,你写的函数没有对应定义该参数,同时col_score需要的string_const参数也漏传,还存在引号未闭合的语法问题 - 无有效返回值:
apply的运行结果没有赋值给目标列,函数也没有返回有效内容,无法得到正确输出
正确改写方案
首先定义和lambda入参逻辑完全一致的普通函数:
def cal_row_score(x, string_const): # 逻辑与原lambda完全等价,接收单行数据x和固定字符串参数 return col_score(x['other_col'], string_const)
调用apply时通过args参数传入额外的固定参数即可:
df['my_col_score'] = df.apply(cal_row_score, axis=1, args=(string_const,))
内容的提问来源于stack exchange,提问作者Morello
相关产品推荐
相关产品推荐

