如何从存储dataframe的数组中提取变量名并转为字符串格式?
Python 列表存储的是 DataFrame 对象的内存引用,本身不会保留你初始化列表时所用的变量名,所以要实现需求有两类方案,根据你的使用场景选择即可:
方案1:提前构造名称列表(最稳妥,推荐)
如果你在定义列表 a 时就明确知道各个元素对应的变量名,直接同步构造 b 即可,不需要额外的逻辑计算,性能最高且不会出错:
a = [df1, df2, df3] b = ['df1', 'df2', 'df3']
方案2:动态反查变量名(适合无法提前得知变量名的场景)
如果列表 a 是动态生成的,无法提前知道变量名,可以通过遍历当前作用域的变量表匹配对象得到对应名称:
代码示例
def get_obj_var_name(obj): # 全局作用域查找,函数内部变量查找把 globals() 换成 locals() 即可 for var_name, value in globals().items(): if value is obj: return var_name return "" a = [df1, df2, df3] b = [get_obj_var_name(df) for df in a]
注意事项
- 如果同一个 DataFrame 对象被多个变量指向,这个方法会返回第一个匹配到的变量名,可能和你预期的不一致
- 不要在循环批量生成 DataFrame 的场景下使用该方案,会出现匹配混乱的问题
内容的提问来源于stack exchange,提问作者vgb_backup
相关产品推荐
相关产品推荐

