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

Python中如何通过函数参数指定DataFrame变量名?

解决方法

推荐方案:用字典存储DataFrames

直接动态创建全局/局部变量不是最佳实践,容易引发命名冲突或难以追踪的问题。更安全清晰的方式是用字典来管理多个DataFrame,把你想要的变量名作为字典的键:

import pandas as pd
import sqlite3

def execute_query(query, df_name, df_dict):
    # 示例用sqlite连接,替换为你的数据库连接逻辑
    conn = sqlite3.connect('your_db.db')
    df = pd.read_sql(query, conn)
    conn.close()
    df_dict[df_name] = df
    return df

# 使用方式
df_collection = {}
execute_query("SELECT * FROM market_share", 'market_share_df', df_collection)

# 之后通过字典访问目标DataFrame
print(df_collection['market_share_df'].head())

可选方案:动态修改命名空间(不推荐)

如果你确实需要直接创建对应名称的变量,可以通过globals()或locals()函数操作当前命名空间,但这种方式会降低代码可读性和可维护性,不建议在生产代码中使用:

def execute_query(query, df_name):
    conn = sqlite3.connect('your_db.db')
    df = pd.read_sql(query, conn)
    conn.close()
    # 将DataFrame赋值给全局命名空间中的对应变量
    globals()[df_name] = df
    return df

# 调用后直接使用目标变量
execute_query("SELECT * FROM market_share", 'market_share_df')
print(market_share_df.head())

为什么直接传字符串不行?

你传入的'market_share_df'只是一个字符串字面量,Python不会自动将其解析为变量名。只有通过显式操作命名空间(如globals())或用容器(如字典)存储,才能将返回的DataFrame与这个名称关联起来。

内容的提问来源于stack exchange,提问作者Mitchell.Laferla

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 04:15:19