2012-06-14 43 views
14

come aggiungere 'd' all'indice qui sotto senza doverlo prima reimpostare?Pandas DataFrame Aggiungi colonna all'indice senza reimpostare

from pandas import DataFrame 
df = DataFrame({'a': range(6), 'b': range(6), 'c': range(6)}) 
df.set_index(['a','b'], inplace=True) 
df['d'] = range(6) 

# how do I set index to 'a b d' without having to reset it first? 
df.reset_index(['a','b','d'], inplace=True) 
df.set_index(['a','b','d'], inplace=True) 

df 

risposta

30

abbiamo aggiunto un'opzione append a set_index. Prova questo.

Il comando è:

df.set_index(['d'], append=True) 

(non abbiamo bisogno di specificare [ 'a', 'b'], in quanto già sono nell'indice e stiamo aggiungendo a loro)

-1

Il codice non è valido, reset_index non ha argomenti inplace nella mia versione di panda (0.8.1). Quanto segue ottiene quello che vuoi ma probabilmente c'è un modo più elegante, ma non hai fornito abbastanza informazioni sul perché stai evitando il reset_index.

df2.index = MultiIndex.from_tuples([(x,y,df2['d'].values[i]) for i,(x,y) in enumerate(df2.index.values)]) 

HTH

Problemi correlati