Форматирование таблицы панд сортировка двух столбцов - PullRequest
0 голосов
/ 11 сентября 2018

Мне нужна помощь с форматированием моих таблиц. Это более простая версия, и я объясню это на примере. Если у меня есть таблица следующим образом:

Col1    Col2

    A   8
    B   2
    C   3
    A   4
    B   5
    C   6
    A   7
    B   1
    C   9

Я хочу, чтобы это было организовано так, чтобы наивысшее значение col2 было первым. В этом случае это 9 из счета C. Следовательно, все значения счета C следуют, расположенные в порядке Col2. Затем самое высокое значение отображается счетом A, поэтому все значения счета A следуют, снова упорядоченные в порядке значений Col2. Финальный стол должен выглядеть примерно так:

Col1    Col2
C   9
C   6
C   3
A   8
A   7
A   4
B   5
B   2
B   1

Что было бы лучшим способом сделать это. есть идеи?

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Возможно, есть лучший способ, но вы могли бы выяснить порядок, установить столбец Col1 в качестве упорядоченного категориального и отсортировать по Col1 и Col2 в порядке возрастания и убывания соответственно:

order = df.groupby('Col1').max().sort_values('Col2', ascending=False).index

df['Col1'] = pd.Categorical(df['Col1'], categories=order, ordered=True)

df.sort_values(['Col1', 'Col2'], ascending=[True,False])

  Col1  Col2
8    C     9
5    C     6
2    C     3
0    A     8
6    A     7
3    A     4
4    B     5
1    B     2
7    B     1
0 голосов
/ 11 сентября 2018

Вам может понадобиться создать ключ справки для sort_values от groupby transform

df['helperkey']=df.groupby('Col1').Col2.transform('max')
df.sort_values(['helperkey','Col2'],ascending=[False,False]).drop('helperkey',1)
Out[102]: 
  Col1  Col2
8    C     9
5    C     6
2    C     3
0    A     8
6    A     7
3    A     4
4    B     5
1    B     2
7    B     1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...