如何获取 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
如何获取 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
import pandas as pd
df = pd.DataFrame( data=np.ones([4,4]) )
df.name = 'Ones'
print df.name
>>>
Ones
- leodf
to_pickle
/ read_pickle
替代 save
/load
) 。请注意不要改变原文意思。 - tmthydvnprtdf.index.name = 'Ones'
)。 这在pickling期间保持不变。 只有当您的“DataFrame”索引未命名为有用的内容时,此方法才有效。 - tmthydvnprtdf.name
会不起作用。def get_df_name(df):
name =[x for x in globals() if globals()[x] is df][0]
return name
'DataFrame' object has no attribute 'name'
的错误。 - Mohamed Thasin ahpd.DataFrame
对象上。此外,请注意pandas
对象属性可能无法序列化。因此,pickling会丢失这些数据。dfs['some_label']
访问数据框。df = pd.DataFrame()
dfs = {'some_label': df}
数据框没有名称,但你可以使用一个(实验性的)属性字典。例如:
df.attrs['name'] = "My name" # Can be retrieved later
某些操作会保留属性。
df.attrs['name']
是可行的。非常好的答案。 - Leonardo根据这里的介绍,我了解到DataFrame是什么:
DataFrame是一个二维标记数据结构,其列可能具有不同的类型。您可以将其视为电子表格或SQL表,或一组Series对象的字典。
而Series则是:
Series是一个能够容纳任何数据类型(整数、字符串、浮点数、Python对象等)的一维标记数组。
Series具有一个可以像这样访问的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'
编辑:根据原帖作者的评论,我认为原帖作者可能在寻找类似于以下内容:
>>> df = pd.DataFrame(...)
>>> df.name = 'df' # making a custom attribute that DataFrame doesn't intrinsically have
>>> print(df.name)
'df'
df
会打印出名称 "df"
而不是打印数据框本身? - dhuang我正在开发一个特征分析模块,和你一样,我需要生成一个报告,包含正在分析的 pandas.Dataframe 的名称。为了解决这个问题,我使用了 @scohe001 和 @LeopardShark 在 https://dev59.com/42Ml5IYBdhLWcg3wa2XV#18425523 中提出的方案,并使用了 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]
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
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
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)