我如何获得在python熊猫索引列名?这是一个数据框架的例子:

             Column 1
Index Title          
Apples              1
Oranges             2
Puppies             3
Ducks               4  

我要做的是获取/设置dataframe索引标题。以下是我的尝试:

import pandas as pd
data = {'Column 1'     : [1., 2., 3., 4.],
        'Index Title'  : ["Apples", "Oranges", "Puppies", "Ducks"]}
df = pd.DataFrame(data)
df.index = df["Index Title"]
del df["Index Title"]
print df

有人知道怎么做吗?


当前回答

如果只获取索引列名,df.index.names将适用于最新版本的pandas的单个索引或MultiIndex。

作为一个在试图找到获得索引名+列名列表的最佳方法时发现这一点的人,我会发现这个答案很有用:

names = list(filter(None, df.index.names + df.columns.values.tolist()))

这适用于无索引、单列索引或MultiIndex。它避免调用reset_index(),因为对于这样一个简单的操作,reset_index()会造成不必要的性能损失。我很惊讶没有一个内置的方法(我遇到过)。我想我经常需要这个,因为我从数据库中穿梭数据,其中dataframe索引映射到一个主键/唯一键,但对我来说实际上只是另一个列。

其他回答

values还提供了列名

如果你不想创建一个新行,而只是把它放在空单元格中,然后使用:

df.columns.name = 'foo'

否则使用:

df.index.name = 'foo'

您可以通过其name属性获取/设置索引

In [7]: df.index.name
Out[7]: 'Index Title'

In [8]: df.index.name = 'foo'

In [9]: df.index.name
Out[9]: 'foo'

In [10]: df
Out[10]: 
         Column 1
foo              
Apples          1
Oranges         2
Puppies         3
Ducks           4

多指数的解决方案在jezrael的循环答案中,但我花了一段时间才找到它,所以我发布了一个新的答案:

df.index.names给出多索引的名称(作为Frozenlist)。

如果只获取索引列名,df.index.names将适用于最新版本的pandas的单个索引或MultiIndex。

作为一个在试图找到获得索引名+列名列表的最佳方法时发现这一点的人,我会发现这个答案很有用:

names = list(filter(None, df.index.names + df.columns.values.tolist()))

这适用于无索引、单列索引或MultiIndex。它避免调用reset_index(),因为对于这样一个简单的操作,reset_index()会造成不必要的性能损失。我很惊讶没有一个内置的方法(我遇到过)。我想我经常需要这个,因为我从数据库中穿梭数据,其中dataframe索引映射到一个主键/唯一键,但对我来说实际上只是另一个列。