Estoy intentando volver a indexar un DataFrame
objeto 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_index
mé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 22
fuente
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) data
Afuera:
a b c 0 1 2 3 1 10 11 12 2 20 21 22
En:
data2 = data.set_index('a')
Afuera:
b c a 1 2 3 10 11 12 20 21 22
En:
data2.index.name = None
Afuera:
b c 1 2 3 10 11 12 20 21 22
fuente