2012-06-14 14 views
14

¿cómo agrego 'd' al siguiente índice sin tener que restablecerlo primero?Pandas DataFrame Agregar columna al índice sin restablecer

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 

Respuesta

30

Hemos añadido una opción append a set_index. Trata eso.

El comando es:

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

(que no es necesario especificar [ 'a', 'b'], puesto que ya están en el índice y estamos añadiendo a ellos)

-1

Su código no es válido, reset_index no tiene un argumento in place en mi versión de pandas (0.8.1). Lo siguiente logra lo que desea, pero probablemente haya una manera más elegante, pero no ha proporcionado suficiente información sobre por qué está evitando el reset_index.

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

HTH

Cuestiones relacionadas