使用带格式化字符串的pandas query时出现UndefinedVariableError
Pandas query函数传递变量报错的解决方法
问题原因
你遇到的错误是因为字符串拼接后,query把svm当成了变量名而非字符串值。比如用f-string拼接后,实际传入的表达式是model == svm,而svm并没有在query的上下文里定义,所以触发UndefinedVariableError。
解决方案
有三种可靠的解决方式:
字符串拼接时给变量加引号
用f-string或者.format()时,把变量用引号包裹,让query识别为字符串:model_name = "svm" # f-string方式 df.query(f'model == "{model_name}"') # .format()方式 df.query('model == "{}"'.format(model_name))使用@符号引用环境变量(推荐)
Pandas的query支持用@直接引用当前环境中的变量,不需要字符串拼接,更简洁安全:model_name = "svm" df.query('model == @model_name')使用%格式化字符串
也可以用传统的字符串格式化写法:model_name = "svm" df.query('model == "%s"' % model_name)
内容的提问来源于stack exchange,提问作者imantha
相关产品推荐
相关产品推荐

