编写设置指定列nan值的Python函数触发NameError报错如何解决
问题原因
触发NameError: name 'code' is not defined的核心原因是调用函数时传入的第二个参数code是未定义的变量:你需要传递的是字符串格式的列名'code',但漏掉了两侧的引号,Python会将无引号的code识别为变量去全局查找,自然会报未定义错误。
另外你编写的函数本身存在冗余设计问题:函数内部已经直接修改了原表的指定列,同时又返回np.nan,后续你又把返回值再次赋值给merged_table['code'],属于无效重复操作。
修复方案
方案1:省略自定义函数,直接实现需求
如果不需要复用逻辑,一行代码就可以完成指定列设为nan的操作:
# 需提前导入numpy:import numpy as np merged_table['code'] = np.nan
方案2:保留自定义函数的修复写法
如果需要复用该逻辑,调整函数和调用方式如下:
import numpy as np def set_nan_for_specific_column(table, column): # 直接修改原表指定列为nan,无需返回值 table[str(column)] = np.nan # 调用时传入带引号的字符串格式列名 set_nan_for_specific_column(merged_table, 'code')
如果不想修改原表,需要返回新表可以调整为:
def set_nan_for_specific_column(table, column): table_copy = table.copy() table_copy[str(column)] = np.nan return table_copy # 调用时接收返回的新表 merged_table = set_nan_for_specific_column(merged_table, 'code')
内容的提问来源于stack exchange,提问作者progammerattempt
相关产品推荐
相关产品推荐

