Как отсортировать столбцы фрейма данных по значению индекса в алфавитном порядке - PullRequest
0 голосов
/ 29 января 2019

Теперь я анализирую много данных, извлеченных в журналах.
Не могли бы вы дать мне знать, как отсортировать столбец данных по индексу в алфавитном порядке?
Я хочу отсортировать значения столбцов по "Temp" вв алфавитном порядке.

Я пытался использовать "sort_values(by="", axis=1)"

   ex) df = df.sort_values(by=['env','In','Temp'], axis=1)

Я думаю, что, возможно, не знаю, как сортировать значения в мультииндексе.
Я не ожидаюрезультат до сих пор.:

from pandas import Series, DataFrame

raw_data = {'Function': ['env', 'env', 'env', 'func1', 'func1', 'func1'],
            'Type': ['In', 'In', 'In', 'In','In', 'out'],
            'Name': ['Volt', 'Temp', 'BD#', 'Name1','Name2', 'Name3'],
            'Val1': ['Max', 'High', '1', '3', '5', '6'],
            'Val2': ['Typ', 'Mid', '2', '4', '7', '6'],
            'Val3': ['Min', 'Low', '3', '3', '6', '3'],
            'Val4': ['Max', 'High', '4', '3', '9', '4'],
            'Val5': ['Max', 'Low', '5', '3', '4', '5'] }
df = DataFrame(raw_data)
df= df.set_index(["Function", "Type","Name"])
print (df)

ниже напечатан фрейм данных

                            Val1    Val2    Val3    Val4    Val5
 Function   Type    Name                    
 env        In      Volt    Max     Typ     Min     Max     Max
                    Temp    High    Mid     Low     High    Low
                    BD#     1       2       3       4       5
 func1      In      Name1   3       4       3       3       3
                    Name2   5       7       6       9       4
            out     Name3   6       6       3       4       5

Я хочу отсортировать мультииндексный фрейм данных по "Temp".

ниже ожидаемого, если я хочу,

                            Val1    Val4    Val3    Val5    Val2
 Function   Type    Name                    
 env        In      Volt    Max     Max     Min     Max     Typ
                    Temp    High    High    Low     Low     Mid
                    BD#     1       4       3       5       2
 func1      In      Name1   3       3       3       3       4
                    Name2   5       9       6       4       7
            out     Name3   6       4       3       5       6

1 Ответ

0 голосов
/ 29 января 2019

Использовать двойное транспонирование с sort_values:

df = df.T.sort_values(('env','In','Temp')).T

print(df)
                     Val1  Val4 Val3 Val5 Val2
Function Type Name                            
env      In   Volt    Max   Max  Min  Max  Typ
              Temp   High  High  Low  Low  Mid
              BD#       1     4    3    5    2
func1    In   Name1     3     3    3    3    4
              Name2     5     9    6    4    7
         out  Name3     6     4    3    5    6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...