Я пытаюсь переиндексировать DataFrame
объект pandas , например,
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
Я делаю это, как показано ниже, и получаю неправильный ответ. Есть подсказки, как это сделать?
>>> 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
Есть идеи, почему это происходит?
Ответы:
Почему бы вам просто не использовать
set_index
метод?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
источник
Если вам не нужна буква "а" в индексе
В :
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
В :
data2 = data.set_index('a')
Из:
b c a 1 2 3 10 11 12 20 21 22
В :
data2.index.name = None
Из:
b c 1 2 3 10 11 12 20 21 22
источник