Подтвердить что ты не робот

Как изменить порядок индексированных строк на основе списка в кадре данных 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

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

4b9b3361

Ответ 1

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

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)