2016-08-09 3 views
3

Если вы столкнулись с большим количеством групп, любой граф, который вы можете сделать, может оказаться бесполезным из-за слишком большого количества строк и нечитаемой легенды. В этих случаях очень полезно найти группы, которые имеют самую большую и наименьшую информацию в них. Однако в то время как x.size() сообщает вам членство в группе (после использования groupby), я не могу найти, чтобы повторно сортировать фрейм данных, используя эту информацию, чтобы вы могли использовать предельный цикл, чтобы отображать только первые группы x.Pandas - Сортировка по номерам членов группы

ответ

3

Вы можете использовать transform, чтобы получить отсчеты и сортировку по этому столбцу:

df = pd.DataFrame({'A': list('aabababc'), 'B': np.arange(8)}) 
df 
Out: 
    A B 
0 a 0 
1 a 1 
2 b 2 
3 a 3 
4 b 4 
5 a 5 
6 b 6 
7 c 7 

df['counts'] = df.groupby('A').transform('count') 
df 
Out: 
    A B counts 
0 a 0  4 
1 a 1  4 
2 b 2  3 
3 a 3  4 
4 b 4  3 
5 a 5  4 
6 b 6  3 
7 c 7  1 

Теперь вы можете сортировать counts:

df.sort_values('counts') 
Out: 
    A B counts 
7 c 7  1 
2 b 2  3 
4 b 4  3 
6 b 6  3 
0 a 0  4 
1 a 1  4 
3 a 3  4 
5 a 5  4 

В одной строке:

df.assign(counts = df.groupby('A').transform('count')).sort_values('counts') 
Смежные вопросы