сброс индекса на основе списка - PullRequest
0 голосов
/ 24 июня 2018

Я хочу сбросить индекс на основе списка

Допустим, у меня есть такой фрейм данных

 list = ['RGB','RBR','RGD']

       a   b

RBR    0   1 
RGD    10  2  
RGB    11  3  
RGD    10  2 
RGD    10  2  
RGD    10  2  
RBR    0   1  
RGB    11  3  

df.reindex (index = list)

Файл "c: \ users \ yugas \ appdata \ local \ Programs \ python \ python36 \ lib \ site-packages \ pandas \ core \ indexes \ base.py", строка 3560, в _can_reindex повысить значение ValueError ("не может переиндексировать издублирующая ось ")

ValueError: невозможно переиндексировать дублирующуюся ось

Любой другой способ, которым я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 24 июня 2018

Не переиндексировать, просто используйте .loc Т.е.

li =  ['RGB','RBR','RGD']
df = df.loc[li]

    a  b
RGB  11  3
RGB  11  3
RBR   0  1
RBR   0  1
RGD  10  2
RGD  10  2
RGD  10  2
RGD  10  2
0 голосов
/ 24 июня 2018

В вашем индексе есть повторяющиеся значения.pd.DataFrame.reindex требует, чтобы ваш индекс был уникальным.

Одним из эффективных решений, доступных для Pandas, является Категориальные данные , с указанием ordered=True.

L = ['RGB', 'RBR', 'RGD']

df.index = pd.Categorical(df.index, categories=L, ordered=True)

res = df.sort_index()

print(res)

      a  b
RGB  11  3
RGB  11  3
RBR   0  1
RBR   0  1
RGD  10  2
RGD  10  2
RGD  10  2
RGD  10  2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...