如何获取DataFrame的名称并将其打印为字符串?示例:boston(分配给csv文件的变量名)
boston
import pandas as pd boston = pd.read_csv('boston.csv') print('The winner is team A based on the %s table.) % boston
fumotvh31#
您可以使用以下命令命名 Dataframe ,然后在您喜欢的任何地方调用该名称:
import pandas as pd df = pd.DataFrame( data=np.ones([4,4]) ) df.name = 'Ones' print df.name >>> Ones
wlzqhblo2#
有时候df.name不起作用。您可能会收到一条错误消息:“DataFrame”对象没有属性“name”尝试以下功能:
df.name
def get_df_name(df): name =[x for x in globals() if globals()[x] is df][0] return name
ohfgkhjo3#
在很多情况下,附加到pd.DataFrame对象的自定义属性是不必要的。另外,注意pandas-对象属性may not serialize。因此pickle将丢失此数据。相反,可以考虑创建一个具有适当命名键的字典,并通过dfs['some_label']访问 Dataframe 。
pd.DataFrame
pandas
dfs['some_label']
df = pd.DataFrame() dfs = {'some_label': df}
h7wcgrx34#
从这里我理解DataFrame是:DataFrame是一个二维标签数据结构,其中的列可能具有不同的类型。您可以将其视为电子表格或SQL表,或者Series对象的字典。和系列为:Series是一个一维的带标签的数组,能够保存任何数据类型(整数、字符串、浮点数、Python对象等)。系列有一个name属性,可按如下方式访问:
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'
pwuypxnk5#
DataFrame没有名称,但您可以使用(实验性)属性字典。例如:
df.attrs['name'] = "My name" # Can be retrieved later
属性通过某些操作被保留。
h7wcgrx36#
下面是一个示例函数:'df.name =文件':下面代码中的第六行
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
yacmzcpb7#
我正在开发一个特性分析模块,我的需求和你的一样,因为我想生成一个名为 * panda.Dataframe* 的报告。为了解决这个问题,我使用了@scohe001和@LeopardShark提供的相同解决方案,最初在https://stackoverflow.com/a/18425523/8508275中,使用inspect库实现:
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
使用给定的 Dataframe 运行此代码,我得到以下输出:
header_generator(trial_dataframe)
--------功能分析器---------Dataframe 名称:“试验_ Dataframe ”内存使用情况:六十三点零八兆
7条答案
按热度按时间fumotvh31#
您可以使用以下命令命名 Dataframe ,然后在您喜欢的任何地方调用该名称:
wlzqhblo2#
有时候
df.name
不起作用。您可能会收到一条错误消息:
“DataFrame”对象没有属性“name”
尝试以下功能:
ohfgkhjo3#
在很多情况下,附加到
pd.DataFrame
对象的自定义属性是不必要的。另外,注意pandas
-对象属性may not serialize。因此pickle将丢失此数据。相反,可以考虑创建一个具有适当命名键的字典,并通过
dfs['some_label']
访问 Dataframe 。h7wcgrx34#
从这里我理解DataFrame是:
DataFrame是一个二维标签数据结构,其中的列可能具有不同的类型。您可以将其视为电子表格或SQL表,或者Series对象的字典。
和系列为:
Series是一个一维的带标签的数组,能够保存任何数据类型(整数、字符串、浮点数、Python对象等)。
系列有一个
name
属性,可按如下方式访问:**编辑:**根据OP的评论,我认为OP正在寻找类似于以下内容的内容:
pwuypxnk5#
DataFrame没有名称,但您可以使用(实验性)属性字典。例如:
属性通过某些操作被保留。
h7wcgrx36#
下面是一个示例函数:'df.name =文件':下面代码中的第六行
yacmzcpb7#
我正在开发一个特性分析模块,我的需求和你的一样,因为我想生成一个名为 * panda.Dataframe* 的报告。为了解决这个问题,我使用了@scohe001和@LeopardShark提供的相同解决方案,最初在https://stackoverflow.com/a/18425523/8508275中,使用inspect库实现:
注意额外的 .f_back 项,因为我打算从另一个函数调用它:
使用给定的 Dataframe 运行此代码,我得到以下输出:
--------功能分析器---------
Dataframe 名称:“试验_ Dataframe ”
内存使用情况:六十三点零八兆