Estoy intentando volver a indexar un DataFrameobjeto pandas , así,
From:
a b c
0 1 2 3
1 10 11 12
2 20 21 22
To :
b c
1 2 3
10 11 12
20 21 22
Estoy haciendo esto como se muestra a continuación y obtengo la respuesta incorrecta. ¿Alguna pista sobre cómo hacer esto?
>>> col = ['a','b','c']
>>> data = DataFrame([[1,2,3],[10,11,12],[20,21,22]],columns=col)
>>> data
a b c
0 1 2 3
1 10 11 12
2 20 21 22
>>> idx2 = data.a.values
>>> idx2
array([ 1, 10, 20], dtype=int64)
>>> data2 = DataFrame(data,index=idx2,columns=col[1:])
>>> data2
b c
1 11 12
10 NaN NaN
20 NaN NaN
¿Alguna idea de por qué está pasando esto?

Respuestas:
¿Por qué no usas simplemente el
set_indexmétodo?In : col = ['a','b','c'] In : data = DataFrame([[1,2,3],[10,11,12],[20,21,22]],columns=col) In : data Out: a b c 0 1 2 3 1 10 11 12 2 20 21 22 In : data2 = data.set_index('a') In : data2 Out: b c a 1 2 3 10 11 12 20 21 22fuente
Si no quiere 'a' en el índice
En:
col = ['a','b','c'] data = DataFrame([[1,2,3],[10,11,12],[20,21,22]],columns=col) dataAfuera:
a b c 0 1 2 3 1 10 11 12 2 20 21 22En:
data2 = data.set_index('a')Afuera:
b c a 1 2 3 10 11 12 20 21 22En:
data2.index.name = NoneAfuera:
b c 1 2 3 10 11 12 20 21 22fuente