Próbuję ponownie zindeksować pandy DataFrame
obiekt , na przykład,
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
Robię to jak pokazano poniżej i otrzymuję złą odpowiedź. Jakieś wskazówki, jak to zrobić?
>>> 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
Jakiś pomysł dlaczego tak się dzieje?
Odpowiedzi:
Dlaczego po prostu nie użyjesz
set_index
metody?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
źródło
Jeśli nie chcesz „a” w indeksie
W :
col = ['a','b','c'] data = DataFrame([[1,2,3],[10,11,12],[20,21,22]],columns=col) data
Na zewnątrz:
a b c 0 1 2 3 1 10 11 12 2 20 21 22
W :
data2 = data.set_index('a')
Na zewnątrz:
b c a 1 2 3 10 11 12 20 21 22
W :
data2.index.name = None
Na zewnątrz:
b c 1 2 3 10 11 12 20 21 22
źródło