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

循环中使用带lambda的df.apply动态传列名的正确语法是什么?

报错根因

点语法x.col_name在pandas中会把col_name识别为固定的列名字面量,不会将其解析为for循环中动态赋值的变量,因此会去查找实际不存在的col_name列,触发属性错误。

正确写法

将点取值替换为方括号取值,方括号内支持传入变量作为动态列名:

cols_with_spaces = ['art_kennz', 'fk_wg_sch']
for col_name in cols_with_spaces:
    df[col_name] = df.apply(lambda x: myFunction(x[col_name]), axis=1)

更优性能方案

逐行apply的执行效率较低,你无需遍历整行数据,直接对目标列单独应用函数即可,写法更简洁性能也更好:

cols_with_spaces = ['art_kennz', 'fk_wg_sch']
for col_name in cols_with_spaces:
    df[col_name] = df[col_name].apply(myFunction)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:39:01