Saya ingin mengelompokkan dataframe saya dengan dua kolom dan kemudian mengurutkan hasil agregat dalam grup.
In [167]:
df
Out[167]:
count job source
0 2 sales A
1 4 sales B
2 6 sales C
3 3 sales D
4 7 sales E
5 5 market A
6 3 market B
7 2 market C
8 4 market D
9 1 market E
In [168]:
df.groupby(['job','source']).agg({'count':sum})
Out[168]:
count
job source
market A 5
B 3
C 2
D 4
E 1
sales A 2
B 4
C 6
D 3
E 7
Sekarang saya ingin mengurutkan kolom hitung dalam urutan menurun di masing-masing grup. Dan kemudian hanya mengambil tiga baris teratas. Untuk mendapatkan sesuatu seperti:
count
job source
market A 5
D 4
B 3
sales E 7
C 6
B 4
order
sudah ditinggalkan penggunaansort_values
bukannyaAnda juga bisa melakukannya dalam sekali jalan, dengan melakukan sortir terlebih dahulu dan menggunakan head untuk mengambil 3 pertama dari setiap grup.
sumber
groupby
jaminan bahwa pesanan tetap terjaga?Berikut adalah contoh lain dari mengambil 3 teratas pada urutan diurutkan, dan mengurutkan dalam grup:
sumber
Coba ini sebagai gantinya
cara sederhana untuk melakukan 'groupby' dan menyortir dalam urutan menurun
sumber
Jika Anda tidak perlu menjumlahkan kolom, maka gunakan jawaban @ tvashtar. Jika Anda perlu menjumlahkan, maka Anda dapat menggunakan jawaban @ joris 'atau yang ini sangat mirip dengannya.
sumber