2013-08-02 76 views
119

如何獲得python熊貓的索引列名?下面是一個例子數據框:熊貓指數欄標題或名稱

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

我試圖做的是獲取/設置數據幀索引標題。這是我試過的:

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 

任何人都知道如何做到這一點?

回答

155

你可以得到/通過其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 
+6

截至目前(0.16)它不起作用。或者說 - 它確實有效,但是一旦DataFrame被修改,它就會擦除索引名稱。 –

+4

應該可以在創建DataFrame時指定索引名稱。例如'pd.DataFrame(值,指數= { 「INDEX_NAME」:index_values})'。我不明白爲什麼這不被允許或實施? – denfromufa

+0

你可以直接用Index來構造一個名字 – Jeff

23

df.index.name設置索引應該做的伎倆。

Python有一個dir函數,讓你查詢對象的屬性。 dir(df.index)在這裏很有幫助。

+0

爲該dir()頂部提示 – SARose

10

如果你不希望創建一個新的行,但只是把它放在空單元格,然後使用:

df.columns.name = 'foo' 

否則使用:

df.index.name = 'foo' 
+1

剛發現它是列名的名字。難怪設置df.index.name會給你一個新的層次。謝謝! – Charles

29

從版本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 
2

使用df.index.rename('foo', inplace=True)來設置索引名。

似乎這個API是可用的,因爲pandas 0.13