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

Python中使用exec()传入DataFrame报错的解决方法咨询

解决exec()执行带DataFrame参数函数时的语法错误

你遇到的问题根源在于:用f-string拼接字典args时,字典中的DataFrame对象会被转换成它的打印字符串(多行表格格式),直接拼入exec执行的代码后,会破坏Python语法结构,导致SyntaxError。

比如你的args如果是{'df': pd.DataFrame({'col': [1,2]})},f"{args}"会输出类似{'df': col\n0 1\n1 2},拼到函数调用里就变成了非法的Python代码。


方案1:直接调用函数(推荐,避免exec)

完全不需要用exec,通过函数名字符串获取函数对象后,直接解包参数调用:

import pandas as pd

# 示例函数与参数
def process_df(df, threshold):
    return df[df['col'] > threshold]

func_name = "process_df"
args = {'df': pd.DataFrame({'col': [1,2,3]}), 'threshold': 2}

# 获取函数对象并执行调用
func = globals()[func_name]
_exec_output = func(**args)

这种方式既安全又不会有语法问题,还避免了exec带来的潜在安全风险。

方案2:如果必须使用exec

不要把字典转成字符串拼入代码,而是将字典存入全局/局部命名空间,在exec代码中直接引用:

# 将args存入全局命名空间
globals()['args_dict'] = args
# 执行exec时直接引用字典变量
exec(f"_exec_output = {func_name}(**args_dict)", globals())
# 执行完成后删除变量,避免污染命名空间
del globals()['args_dict']

这样exec执行的代码是合法的,因为它直接引用了命名空间中的字典对象,而非拼接错误的字符串格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 08:23:15