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

如何使数组中的DataFrame返回无引号变量名并作为函数参数传递?

直接从数组元素获取原始变量名不可行

首先得明确:你没法直接从df_array[0]得到无引号的weight这个变量名。原因很简单——Python里的变量只是指向DataFrame对象的「标签」,当你把DataFrame放进数组时,数组存储的是对象本身,而不是这个标签。Python不会自动记录对象原来绑定的变量名,所以从数组元素反推原始变量名这条路走不通。

两种实用的替代方案

1. 用字典存储(最推荐)

把DataFrame和对应的名称配对存进字典,键是变量名字符串,值是DataFrame对象。这样既可以轻松拿到名称,也能快速访问对应的DataFrame:

import pandas as pd

# 示例DataFrame
weight = pd.DataFrame({"col1": [1, 2], "col2": [3, 4]})
age = pd.DataFrame({"colA": [5, 6], "colB": [7, 8]})

# 构建字典:键为名称字符串,值为DataFrame
df_dict = {"weight": weight, "age": age}

# 获取第一个DataFrame的名称和对象
first_df_name = next(iter(df_dict.keys()))  # 得到"weight"
first_df = df_dict[first_df_name]

# 传递给其他函数
def process_df(df_name, df):
    print(f"处理DataFrame: {df_name}")
    print(df.head())

process_df(first_df_name, first_df)

2. 给DataFrame添加自定义属性

如果一定要用数组存储,可以给每个DataFrame手动添加一个存储名称的属性,之后通过数组索引访问这个属性就能拿到名称:

import pandas as pd

weight = pd.DataFrame({"col1": [1, 2], "col2": [3, 4]})
weight.df_name = "weight"  # 添加自定义属性存储名称

age = pd.DataFrame({"colA": [5, 6], "colB": [7, 8]})
age.df_name = "age"

df_array = [weight, age]

# 获取第一个DataFrame的名称
print(df_array[0].df_name)  # 输出: weight

# 传递给函数
process_df(df_array[0].df_name, df_array[0])

总结

直接从数组元素获取原始变量名没有办法实现,但用字典或者自定义属性的方式,完全可以满足你「获取名称并传递给其他函数」的需求。其中字典的方式更清晰、更符合Python的惯用写法,优先推荐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:57:41