Mencari Baris dengan Nilai Lajur B Maksimum untuk Nilai Lajur A Pendua
Dalam analisis data, selalunya perlu mengalih keluar rekod pendua sambil mengekalkan data unik. Senario biasa melibatkan set data dengan nilai pendua dalam lajur tertentu (lajur A), di mana matlamatnya adalah untuk mengekalkan baris dengan nilai tertinggi dalam lajur lain (lajur B).
Untuk mencapai ini, yang pertama penyelesaian menggunakan fungsi drop_duplicates() dengan parameter keep="last". Ini menjatuhkan baris pendua berdasarkan lajur A sambil mengekalkan baris terakhir dilihat, tanpa mengira nilai dalam lajur B.
Walau bagaimanapun, jika objektifnya adalah untuk mengekalkan baris dengan nilai maksimum dalam lajur B, perkara di atas penyelesaian tidak sesuai. Sebaliknya, gabungan groupby() dan apply(), serupa dengan penyelesaian kedua yang disediakan, boleh digunakan. Pendekatan ini mengumpulkan baris mengikut lajur A, menggunakan fungsi pada setiap kumpulan dan memilih baris dengan nilai maksimum dalam lajur B dalam setiap kumpulan.
Pelaksanaan:
import pandas as pd # Create data frame with duplicate values in column A df = pd.DataFrame([[1, 10], [1, 20], [2, 30], [2, 40], [3, 10]], columns=['A', 'B']) # Keep row with maximum value in column B for each duplicate in column A max_b_rows = df.groupby('A', group_keys=False).apply(lambda x: x.loc[x.B.idxmax()]) # Display resulting data frame print(max_b_rows)
Output:
A B A 1 1 20 2 2 40 3 3 10
Atas ialah kandungan terperinci Bagaimana Mengekalkan Baris dengan Nilai Maksimum dalam Lajur B untuk Nilai Pendua dalam Lajur A?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!