Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengeluarkan Baris Pendua dengan Cekap Berdasarkan Indeks dalam Panda?

Bagaimana untuk Mengeluarkan Baris Pendua dengan Cekap Berdasarkan Indeks dalam Panda?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-18 18:26:02970semak imbas

How to Efficiently Remove Duplicate Rows Based on Indices in Pandas?

Mengalih keluar Baris Panda dengan Indeks Pendua

Dalam senario analisis data, indeks pendua boleh timbul, yang membawa kepada keperluan untuk mengalih keluar baris tersebut dengan cekap . Artikel ini meneroka penyelesaian kepada masalah ini menggunakan perpustakaan Pandas yang digunakan secara meluas.

Pendekatan Pandas untuk Penyingkiran Pendua

Panda menawarkan beberapa kaedah untuk mengalih keluar baris pendua berdasarkan indeks nilai:

  • reset_index().drop_duplicates(subset='index').set_index('index'): Pendekatan ini melibatkan penetapan semula indeks DataFrame, mengenal pasti pendua menggunakan drop_duplicates( ), dan menetapkan semula indeks asal sebagai indeks lajur.
  • groupby().first(): Kaedah yang lebih ringkas melibatkan pengumpulan DataFrame mengikut indeksnya dan memilih kejadian pertama menggunakan fungsi first().
  • [~df3.index.duplicated(keep='first')]: Kaedah pendua beroperasi secara langsung pada Indeks Pandas, membolehkan penyingkiran pendua sambil mengekalkan contoh pertama. Anda boleh menggunakan keep='last' untuk mengekalkan contoh terakhir pendua.

Perbandingan Prestasi

Kerumitan masa setiap kaedah berbeza-beza berdasarkan saiz dan kerumitan DataFrame. Menanda aras kaedah ini menggunakan sampel DataFrame:

  • drop_duplicates(subset='index'): Berprestasi paling rendah kerana operasi isihan asasnya.
  • groupby().first(): Berprestasi sedikit kurang daripada duplicated().
  • [~df3.index.duplicated(keep='first')]: Paling berprestasi dan boleh dibaca.

Sampel Demonstrasi

Untuk menggambarkan penggunaan kaedah pendua, pertimbangkan sampel DataFrame df3 dengan nilai indeks pendua:

import pandas as pd
import datetime

# Example DataFrame with duplicate indices
startdate = datetime.datetime(2001, 1, 1, 0, 0)
enddate = datetime.datetime(2001, 1, 1, 5, 0)
index = pd.date_range(start=startdate, end=enddate, freq='H')
data1 = {'A' : range(6), 'B' : range(6)}
data2 = {'A' : [20, -30, 40], 'B' : [-50, 60, -70]}
df1 = pd.DataFrame(data=data1, index=index)
df2 = pd.DataFrame(data=data2, index=index[:3])
df3 = df2.append(df1)

print(df3)

# Remove duplicate rows with duplicate indices
df3 = df3[~df3.index.duplicated(keep='first')]

print(df3)

Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Baris Pendua dengan Cekap Berdasarkan Indeks dalam Panda?. 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