Pandas название или название столбца индекса

Как получить имя столбца индекса в python pandas? Здесь примерный кадр:

             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

Кто-нибудь знает, как это сделать?

Ответ 1

Вы можете просто получить/установить индекс с помощью свойства 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

Ответ 2

В версии 0.18.0 вы можете использовать rename_axis:

print df
             Column 1
Index Title          
Apples            1.0
Oranges           2.0
Puppies           3.0
Ducks             4.0

Новая функциональность хорошо работает в цепочках методов.

print df.rename_axis('foo')
         Column 1
foo              
Apples        1.0
Oranges       2.0
Puppies       3.0
Ducks         4.0

Вы также можете переименовать имена столбцов с параметром axis:

print df
Col Name     Column 1
Index Title          
Apples            1.0
Oranges           2.0
Puppies           3.0
Ducks             4.0
print df.rename_axis('foo').rename_axis("bar", axis="columns")
bar      Column 1
foo              
Apples        1.0
Oranges       2.0
Puppies       3.0
Ducks         4.0

print df.rename_axis('foo').rename_axis("bar", axis=1)
bar      Column 1
foo              
Apples        1.0
Oranges       2.0
Puppies       3.0
Ducks         4.0

Ответ 3

df.index.name должен сделать трюк.

Python имеет функцию dir, которая позволяет запрашивать атрибуты объекта. dir(df.index) был полезен здесь.

Ответ 4

Если вы не хотите создавать новую строку, а просто помещаете ее в пустую ячейку, используйте:

df.columns.name = 'foo'

В противном случае используйте:

df.index.name = 'foo'

Ответ 5

df.columns.values также дают имена столбцов

Ответ 6

Используйте df.index.rename('foo', inplace=True) для установки имени индекса.

Кажется, этот api доступен с pandas 0.13.