Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mencari Nilai Paling Kerap dalam Setiap Kumpulan Pandas DataFrame?

Bagaimana untuk Mencari Nilai Paling Kerap dalam Setiap Kumpulan Pandas DataFrame?

Linda Hamilton
Lepaskan: 2024-12-01 08:22:10
asal
163 orang telah melayarinya

How to Find the Most Frequent Value in Each Group of a Pandas DataFrame?

Pilih Nilai Paling Biasa untuk Setiap Kumpulan dalam DataFrame

Untuk membersihkan data yang mengandungi berbilang lajur rentetan, anda perlu mengumpulkan baris mengikut lajur tertentu dan memilih yang paling banyak. nilai sepunya untuk lajur tertentu dalam setiap kumpulan. Artikel ini menunjukkan cara untuk menyelesaikan tugas ini menggunakan pustaka Pandas yang berkuasa.

Pembetulan Kod untuk Mesej Ralat Tertentu

Kod yang disediakan dalam pertanyaan awal mengandungi beberapa ralat, yang telah diperbetulkan di bawah:

import pandas as pd

source = pd.DataFrame({
    'Country': ['USA', 'USA', 'Russia', 'USA'], 
    'City': ['New York', 'New York', 'Saint Petersburg', 'New York'],
    'Short Name': ['NY', 'New', 'Spb', 'NY']})

# Group by 'Country' and 'City' and calculate the most frequent 'Short Name' in each group
result = source.groupby(['Country', 'City'])['Short Name'].apply(lambda x: pd.Series.mode(x)[0][0])
Salin selepas log masuk

Penjelasan

  1. Gunakan yang terkini Series.mode: Kod asal cuba menggunakan mod statistics.mode pada setiap kumpulan, yang tidak mengendalikan berbilang mod dengan baik dan boleh menimbulkan ralat. Sebaliknya, fungsi pd.Series.mode yang lebih terkini digunakan, yang secara eksplisit mengembalikan Siri semua mod, menyelesaikan isu.
  2. Kendalikan berbilang mod: Untuk memastikan bahawa hanya satu nilai yang paling biasa dipilih, kod mengekstrak elemen pertama daripada Siri yang dikembalikan oleh Series.mode. Ini dicapai dengan menggunakan sintaks 0.

Pilihan Tambahan

Jika DataFrame diutamakan sebagai hasilnya:

result = source.groupby(['Country', 'City'])['Short Name'].agg(pd.Series.mode).to_frame()
Salin selepas log masuk

Jika anda mahukan baris berasingan untuk setiap baris mod:

result = source.groupby(['Country', 'City'])['Short Name'].apply(pd.Series.mode)
Salin selepas log masuk

Nota: Jika anda bersedia menerima sebarang nilai mod sebagai pilihan, anda boleh menggunakan fungsi lambda yang mengekstrak mod pertama daripada Siri :

result = source.groupby(['Country', 'City'])['Short Name'].agg(lambda x: pd.Series.mode(x)[0])
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mencari Nilai Paling Kerap dalam Setiap Kumpulan Pandas DataFrame?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan