2013-07-17 3 views
11

У меня есть dataframe в Pandas, я хотел бы отсортировать его столбцы (т.е. получить новый фрейм данных или представление) в соответствии со средним значением его столбцов (или, например, их std стоимость). Документация рассказывает о sorting by label or value, но я не мог найти ничего по пользовательским методам сортировки.Pandas: Сортировка столбцов по их среднему значению

Как я могу это сделать?

ответ

22

Вы можете использовать метод mean DataFrame и метод Серия sort_values:

In [11]: df = pd.DataFrame(np.random.randn(4,4), columns=list('ABCD')) 

In [12]: df 
Out[12]: 
      A   B   C   D 
0 0.933069 1.432486 0.288637 -1.867853 
1 -0.455952 -0.725268 0.339908 1.318175 
2 -0.894331 0.573868 1.116137 0.508845 
3 0.661572 0.819360 -0.527327 -0.925478 

In [13]: df.mean() 
Out[13]: 
A 0.061089 
B 0.525112 
C 0.304339 
D -0.241578 
dtype: float64 

In [14]: df.mean().sort_values() 
Out[14]: 
D -0.241578 
A 0.061089 
C 0.304339 
B 0.525112 
dtype: float64 

Затем вы можете изменить порядок столбцов с помощью reindex_axis:

In [15]: df.reindex_axis(df.mean().sort_values().index, axis=1) 
Out[15]: 
      D   A   C   B 
0 -1.867853 0.933069 0.288637 1.432486 
1 1.318175 -0.455952 0.339908 -0.725268 
2 0.508845 -0.894331 1.116137 0.573868 
3 -0.925478 0.661572 -0.527327 0.819360 

Примечание: В более ранних версиях pandas, sort_values было order, но order было d пересмотренный как часть 0.17, чтобы быть более совместимым с другими методами сортировки.

+7

добавить в кулинарию? – Jeff

+3

Кажется, что 'order' теперь устарел, и вместо него следует использовать' sort_values' (добавленный в версии 0.17.0). – bli

+0

@bli спасибо! Мне действительно нужно написать скрипт, чтобы обновить все мои ответы на pandas (я подозреваю, что есть несколько сотен, которые могут сделать с обновлением) .... –

Смежные вопросы