获取 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 %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)
扫码咨询,免费领取项目管理大礼包!