Как изменить порядок индексированных строк на основе списка в кадре данных Pandas

У меня есть кадр данных, который выглядит так:

company Amazon Apple Yahoo name A 0 130 0 C 173 0 0 Z 0 0 150 

Он был создан с использованием этого кода:

 import pandas as pd df = pd.DataFrame({'name' : ['A', 'Z','C'], 'company' : ['Apple', 'Yahoo','Amazon'], 'height' : [130, 150,173]}) df = df.pivot(index="name", columns="company", values="height").fillna(0) 

Я хочу, чтобы сортировать строку (с name индекса) в соответствии с предопределенным списком ["Z", "C", "A"] . В результате:

 company Amazon Apple Yahoo name Z 0 0 150 C 173 0 0 A 0 130 0 

Как я могу это достичь?

One Solution collect form web for “Как изменить порядок индексированных строк на основе списка в кадре данных Pandas”

Вы можете установить индекс по предопределенному порядку, используя reindex like

 In [14]: df.reindex(["Z", "C", "A"]) Out[14]: company Amazon Apple Yahoo Z 0 0 150 C 173 0 0 A 0 130 0 

Однако, если это алфавитный порядок, вы можете использовать sort_index(ascending=False)

 In [12]: df.sort_index(ascending=False) Out[12]: company Amazon Apple Yahoo name Z 0 0 150 C 173 0 0 A 0 130 0 

Как указано ниже, вам нужно назначить его некоторой переменной

 In [13]: df = df.sort_index(ascending=False) 
  • Ошибка: значение истинности серии неоднозначно. Python & Pandas
  • Как я могу изменить конкретную метку строки в кадре данных Pandas?
  • Почему Pandas Concatenation (pandas.concat), так что память неэффективна?
  • Как нарисовать графическую таблицу счетчиков в пандах
  • Преобразование типа numpy в python
  • ошибка объекта non-NDFFrame с использованием функции pandas.SparseSeries.from_coo ()
  • Преобразование длинных целых чисел в строки в пандах (чтобы избежать научной нотации)
  • Pandas, проверьте, существует ли значение временной метки в повторно сэмплированном 30-минутном временном буфере datetimeindex
  • Python - лучший язык программирования в мире.