获取 pandas DataFrame 的名称

2025-03-04 08:23:00
admin
原创
104
摘要:问题描述:如何获取 DataFrame 的名称并将其打印为字符串?例子:boston(分配给 csv 文件的变量名称)import pandas as pd boston = pd.read_csv('boston.csv') print('The winner is team A based on the...

问题描述:

如何获取 DataFrame 的名称并将其打印为字符串?

例子:

boston(分配给 csv 文件的变量名称)

import pandas as pd
boston = pd.read_csv('boston.csv')

print('The winner is team A based on the %s table.' % boston)

解决方案 1:

您可以使用以下内容命名数据框,然后在任何您喜欢的地方调用该名称:

import pandas as pd
df = pd.DataFrame( data=np.ones([4,4]) )
df.name = 'Ones'

print df.name
>>>
Ones

解决方案 2:

有时df.name不起作用。

您可能会收到一条错误消息:

‘DataFrame’对象没有属性‘name’

尝试下面的功能:

def get_df_name(df):
    name =[x for x in globals() if globals()[x] is df][0]
    return name

解决方案 3:

在许多情况下,附加到对象的自定义属性pd.DataFrame是不必要的。另外,请注意,pandas对象属性可能无法序列化。因此 pickling 会丢失这些数据。

相反,考虑创建一个具有适当命名的键的字典并通过访问数据框dfs['some_label']

df = pd.DataFrame()

dfs = {'some_label': df}

解决方案 4:

DataFrames 没有名称,但您可以使用(实验性的)属性字典。例如:

df.attrs['name'] = "My name"   # Can be retrieved later

通过一些操作,属性得以保留。

解决方案 5:

从这里我理解的DataFrames是:

DataFrame 是一种二维标记数据结构,其列可能具有不同类型的类型。您可以将其视为电子表格或 SQL 表,或 Series 对象的字典。

系列包括:

系列是一维标记数组,能够保存任何数据类型(整数、字符串、浮点数、Python 对象等)。

系列有一个name可以像这样访问的属性:

 In [27]: s = pd.Series(np.random.randn(5), name='something')

 In [28]: s
 Out[28]: 
 0    0.541
 1   -1.175
 2    0.129
 3    0.043
 4   -0.429
 Name: something, dtype: float64

 In [29]: s.name
 Out[29]: 'something'

编辑:根据 OP 的评论,我认为 OP 正在寻找类似的东西:

 >>> df = pd.DataFrame(...)
 >>> df.name = 'df' # making a custom attribute that DataFrame doesn't intrinsically have
 >>> print(df.name)
 'df'

解决方案 6:

我正在开发一个用于特征分析的模块,我有和你一样的需求,因为我想生成一份带有正在分析的数据框名称的报告。为了解决这个问题,我使用了@scohe001 提出的相同解决方案,使用检查库实现:

import inspect

def aux_retrieve_name(var):
    callers_local_vars = inspect.currentframe().f_back.f_back.f_locals.items()
    return [var_name for var_name, var_val in callers_local_vars if var_val is var]

请注意附加.f_back术语,因为我打算从另一个函数调用它:

def header_generator(df):
    print('--------- Feature Analyzer ----------')
    print('Dataframe name: "{}"'.format(aux_retrieve_name(df)))
    print('Memory usage: {:03.2f} MB'.format(df.memory_usage(deep=True).sum() / 1024 ** 2))
    return

使用给定的数据框运行此代码,我得到以下输出:

header_generator(trial_dataframe)

--------- 特征分析器 ----------

数据框名称:“trial_dataframe”

内存使用量:63.08 MB

解决方案 7:

这是一个示例函数:'df.name = file`:下面代码中的第六行

def df_list():
    filename_list = current_stage_files(PATH)
    df_list = []
    for file in filename_list:
        df = pd.read_csv(PATH+file)
        df.name = file
        df_list.append(df)
    return df_list

解决方案 8:

要获取 Python 中 DataFrame 的变量名称,您无法直接使用原生 Python 或 pandas 属性来执行此操作。但是,您可以通过检查 globals() 或 locals() 字典来匹配 ID,从而使用变通方法。以下是一个可以查找 DataFrame 名称的函数:

def find_df_name(df):
   name = [name for name, obj in globals().items() if id(obj) == id(df)]
   return name[0] if name else None

用法:

df_name = find_df_name(burnishing_defects)
print(df_name)
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   3970  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   2740  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Freshdesk、ClickUp、nTask、Hubstaff、Plutio、Productive、Targa、Bonsai、Wrike。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在项目管理过程中面临着诸多痛点,如任务分配不...
项目管理系统   79  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Monday、TeamGantt、Filestage、Chanty、Visor、Smartsheet、Productive、Quire、Planview。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多项目经理和团队在管理复杂项目时,常...
开源项目管理工具   87  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Smartsheet、GanttPRO、Backlog、Visor、ResourceGuru、Productive、Xebrio、Hive、Quire。在当今快节奏的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在选择项目管理工具时常常面临困惑:...
项目管理系统   74  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用