2013-08-02 20 views
119

Come si ottiene il nome della colonna dell'indice in Python panda? Ecco un esempio dataframe:Nome colonna panda titolo o nome

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

Quello che sto cercando di fare è ottenere/impostare il titolo dell'indice dataframe. Ecco cosa ho provato:

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 

Qualcuno sa come fare questo?

risposta

155

Si può solo ottenere/impostare l'indice attraverso il suo name proprietà

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

A partire da ora (0.16) non funziona. O meglio: funziona, ma non appena DataFrame viene modificato, cancella il nome dell'indice. –

+4

dovrebbe essere possibile specificare il nome dell'indice al momento della creazione di DataFrame. per esempio. 'Pd.DataFrame (valori, index = { "INDEX_NAME": index_values})'. Non capisco perché questo non è permesso o implementato? – denfromufa

+0

puoi costruire direttamente con un indice per aggiungere un nome – Jeff

23

df.index.name dovrebbe fare il trucco.

Python ha una funzione dir che consente di eseguire query sugli attributi dell'oggetto. dir(df.index) è stato utile qui.

+0

Sfogliando per quel 'dir()' top tip – SARose

10

Se non si desidera creare una nuova riga, ma semplicemente metterlo in cella vuota quindi utilizzare:

df.columns.name = 'foo' 

Altrimenti utilizzare:

df.index.name = 'foo' 
+1

Appena trovato è un nome per i nomi delle colonne. Non c'è da stupirsi che l'impostazione df.index.name ti dia un nuovo livello. Grazie! – Charles

6

df.columns.values anche darci i nomi delle colonne

29

Dalla versione 0.18.0 è possibile utilizzare rename_axis:

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

La nuova funzionalità funziona bene nelle catene di metodi.

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

È possibile anche rinominare i nomi di colonna con il parametro 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

Usa df.index.rename('foo', inplace=True) per impostare il nome di indice.

Sembra che questa API sia disponibile dal pandas 0.13.

Problemi correlati