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
相关产品推荐
相关产品推荐

