获取PandasDataFrame的名称

lc8prwob  于 2022-12-25  发布在  其他
关注(0)|答案(7)|浏览(297)

如何获取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
fumotvh3

fumotvh31#

您可以使用以下命令命名 Dataframe ,然后在您喜欢的任何地方调用该名称:

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

print df.name
>>>
Ones
wlzqhblo

wlzqhblo2#

有时候df.name不起作用。
您可能会收到一条错误消息:
“DataFrame”对象没有属性“name”
尝试以下功能:

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

ohfgkhjo3#

在很多情况下,附加到pd.DataFrame对象的自定义属性是不必要的。另外,注意pandas-对象属性may not serialize。因此pickle将丢失此数据。
相反,可以考虑创建一个具有适当命名键的字典,并通过dfs['some_label']访问 Dataframe 。

df = pd.DataFrame()

dfs = {'some_label': df}
h7wcgrx3

h7wcgrx34#

从这里我理解DataFrame是:
DataFrame是一个二维标签数据结构,其中的列可能具有不同的类型。您可以将其视为电子表格或SQL表,或者Series对象的字典。
和系列为:
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'
pwuypxnk

pwuypxnk5#

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

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

属性通过某些操作被保留。

h7wcgrx3

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
yacmzcpb

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 ”
内存使用情况:六十三点零八兆

相关问题