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.
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])
Jika DataFrame diutamakan sebagai hasilnya:
result = source.groupby(['Country', 'City'])['Short Name'].agg(pd.Series.mode).to_frame()
Jika anda mahukan baris berasingan untuk setiap baris mod:
result = source.groupby(['Country', 'City'])['Short Name'].apply(pd.Series.mode)
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])
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!