获取pandas DataFrame的名称

leo*_*leo 38 python dataframe pandas

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

例:

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

boston = read_csv('boston.csv')

print ('The winner is team A based on the %s table.) % boston
Run Code Online (Sandbox Code Playgroud)

ajs*_*jsp 34

您可以使用以下命令对数据框命名,然后在任意位置调用名称:

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

print df.name
>>>
Ones
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.

  • 对于子孙后代,从v 0.18.1开始,这[没有生存酸洗](https://github.com/pandas-dev/pandas/issues/447#issuecomment-10949838)(对于v 0.18.1,使用`to_pickle` /如果尝试重现GitHub注释,则"read_pickle"而不是"save"/"load". (6认同)
  • 这是一个糟糕的主意,因为如果你和`drop`一样多,那么返回的对象将不再具有`name`属性.这很诱人,但会产生无法解释的错误. (5认同)
  • 真的很糟糕。如果调用df.name = Ones与df ['name] ='Ones'相同。这意味着该列的值将为“一个”。因此,这不是一个正确的答案。您可以将数据帧存储在字典中,并使用键来识别它们 (4认同)
  • 我找到的解决方法是将`DataFrame`的名称放在索引的name属性中(例如`df.index.name ='Ones'`).在酸洗过程中保持这种状态.这仅适用于你的`DataFrame`索引尚未被命名为有用的东西...... (3认同)
  • 我需要将名称作为变量。将熊猫导入为 pd df = pd.DataFrame( data=np.ones([4,4]) ) df.name = 'df' 打印 df.name >>> df (2认同)

cre*_*ion 20

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

df.attrs['name'] = "My name"   # Can be retrieved later
Run Code Online (Sandbox Code Playgroud)

通过一些操作保留属性。


小智 15

有时df.name不起作用。

您可能会收到错误消息:

'DataFrame'对象没有属性'name'

尝试以下功能:

def get_df_name(df):
    name =[x for x in globals() if globals()[x] is df][0]
    return name
Run Code Online (Sandbox Code Playgroud)

  • 只是为了确保人们不会感到困惑:这里的代码片段所做的是在所有当前定义的全局变量中查找数据帧并返回其变量名称。这**不**保证有效(例如,您的 DF 是局部变量)并且没有适当的错误处理机制。仅当您确定自己在做什么时才应使用此功能! (8认同)
  • 当它没有分配任何名称时,它会抛出`'DataFrame' object has no attribute 'name'` (3认同)

jpp*_*jpp 8

在许多情况下,pd.DataFrame不需要附加到对象的自定义属性.此外,请注意pandas-object属性可能不会序列化.因此酸洗会丢失这些数据.

相反,请考虑使用适当命名的密钥创建字典并通过访问数据框dfs['some_label'].

df = pd.DataFrame()

dfs = {'some_label': df}
Run Code Online (Sandbox Code Playgroud)


azn*_*na9 7

这里我了解到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'
Run Code Online (Sandbox Code Playgroud)

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

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

  • 说文件的名称是apple.csv。我希望它像文件来自苹果一样被打印。---仅那个苹果必须是动态的,具体取决于csv文件的名称。 (4认同)
  • 是的。我正是这个意思。 (3认同)
  • 我需要名称是一个类似于name = <表名>的变量 (2认同)
  • 你说的变量是什么意思?就像调用 `df` 打印名称 `"df"` 而不是打印数据帧一样? (2认同)
  • @leo,对此有什么解决办法吗?您是否获得了不带引号的数据框名称? (2认同)