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

Python中如何获取列表内DataFrame对象的变量名

获取列表中DataFrame对应的变量名

在Python中,DataFrame对象本身不会记录指向它的变量名(一个对象可以被多个变量引用)。要获取列表中每个DataFrame对应的变量名,需要从当前命名空间反向查找,或者提前建立映射关系,以下是两种可行方案:

方案一:从命名空间反向查找

通过遍历全局或局部作用域的变量,匹配列表中的DataFrame对象,找到对应的变量名:

import pandas as pd

# 示例DataFrame
df_x = pd.DataFrame({'a': [1,2]})
df_y = pd.DataFrame({'b': [3,4]})
df_z = pd.DataFrame({'c': [5,6]})
sensors = [df_x, df_y, df_z]

def get_df_names(df_list):
    # 遍历全局变量,筛选出目标DataFrame对应的变量名
    global_vars = globals()
    # 先收集所有匹配的变量名与对象的映射
    name_obj_map = {name: obj for name, obj in global_vars.items() if obj in df_list and not name.startswith('_')}
    # 按输入列表的顺序返回对应变量名
    return [name for df in df_list for name, obj in name_obj_map.items() if obj is df]

print(get_df_names(sensors))  # 输出: ['df_x', 'df_y', 'df_z']

注意事项

  • 如果DataFrame是在函数内部定义的局部变量,将globals()替换为locals()即可
  • 若同一个DataFrame被多个变量引用,该方法会返回所有匹配的变量名
  • 命名空间中以下划线开头的临时变量会被自动排除

方案二:提前用字典建立映射(推荐)

反向查找存在不确定性(比如变量名被覆盖、对象被多个变量引用),更可靠的方式是直接用字典存储变量名和DataFrame的映射关系:

# 直接用字典关联变量名和DataFrame
sensors_dict = {'df_x': df_x, 'df_y': df_y, 'df_z': df_z}

# 获取所有变量名
print(list(sensors_dict.keys()))  # 输出: ['df_x', 'df_y', 'df_z']
# 获取指定变量对应的DataFrame
print(sensors_dict['df_x'])

这种方式直观可控,避免了命名空间查找的潜在问题,优先推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 22:18:19