Saya menggunakan bingkai data ini:
Fruit Date Name Number
Apples 10/6/2016 Bob 7
Apples 10/6/2016 Bob 8
Apples 10/6/2016 Mike 9
Apples 10/7/2016 Steve 10
Apples 10/7/2016 Bob 1
Oranges 10/7/2016 Bob 2
Oranges 10/6/2016 Tom 15
Oranges 10/6/2016 Mike 57
Oranges 10/6/2016 Bob 65
Oranges 10/7/2016 Tony 1
Grapes 10/7/2016 Bob 1
Grapes 10/7/2016 Tom 87
Grapes 10/7/2016 Bob 22
Grapes 10/7/2016 Bob 12
Grapes 10/7/2016 Tony 15
Saya ingin menggabungkan ini dengan nama dan kemudian dengan buah untuk mendapatkan jumlah total buah per nama.
Bob,Apples,16 ( for example )
Saya mencoba mengelompokkan berdasarkan Nama dan Buah tetapi bagaimana cara mendapatkan jumlah total buah.
Number
?Anda juga dapat menggunakan fungsi agg,
sumber
Series
sedangkan yang lain mengembalikanGroupBy
objek.DataFrame
objek sebagai gantinya (seperti dalam jawaban yang diterima), gunakan tanda kurung ganda'Number'
, yaitu:df.groupby(['Name', 'Fruit'])[['Number']].agg('sum')
Jika Anda ingin menyimpan kolom asli
Fruit
danName
, gunakanreset_index()
. Kalau tidakFruit
danName
akan menjadi bagian dari indeks.Seperti yang terlihat pada jawaban lain:
sumber
Keduanya menjawab apa yang Anda inginkan.
Anda dapat menggunakan
pivot
fungsionalitas untuk mengatur data dalam tabel yang bagussumber
Anda dapat memilih kolom berbeda untuk menjumlahkan angka.
sumber
Anda dapat mengatur
groupby
kolom untukindex
kemudian menggunakansum
denganlevel
sumber
Variasi pada fungsi .agg (); memberikan kemampuan untuk (1) tetap menggunakan tipe DataFrame, (2) menerapkan rata-rata, jumlah, penjumlahan, dll. dan (3) memungkinkan groupby pada banyak kolom sambil mempertahankan keterbacaan.
menggunakan nilai-nilai Anda ...
sumber