Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana Mengekalkan Baris dengan Nilai Maksimum dalam Lajur B untuk Nilai Pendua dalam Lajur A?

Bagaimana Mengekalkan Baris dengan Nilai Maksimum dalam Lajur B untuk Nilai Pendua dalam Lajur A?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-07 04:27:02686semak imbas

How to Keep Rows with Maximum Values in Column B for Duplicate Values in Column A?

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!

Kenyataan:
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