The pandas
drop_duplicates
fungsi besar untuk "uniquifying" dataframe a. Namun, salah satu argumen kata kunci yang harus dilewati adalah take_last=True
atau take_last=False
, sementara saya ingin menghapus semua baris yang merupakan duplikat di seluruh bagian kolom. Apakah ini mungkin?
A B C
0 foo 0 A
1 foo 1 A
2 foo 1 B
3 bar 1 A
Sebagai contoh, saya ingin menjatuhkan baris yang cocok pada kolom A
dan C
jadi ini harus drop baris 0 dan 1.
python
pandas
duplicates
Jamie Bull
sumber
sumber
df.reindex(df.iloc[:,[0,2]].drop_duplicates(keep=False).index)
?df.drop_duplicates(subset=[df.columns[0:2]], keep = False)
Hanya ingin menambahkan jawaban Ben di drop_duplicates :
keep
: {'first', 'last', False}, default 'first'pertama: Jatuhkan duplikat kecuali untuk kejadian pertama.
terakhir: Jatuhkan duplikat kecuali untuk kejadian terakhir.
Salah: Jatuhkan semua duplikat.
Jadi pengaturan
keep
ke False akan memberikan jawaban yang Anda inginkan.sumber
Jika Anda ingin hasilnya disimpan dalam dataset lain:
atau
Jika dataset yang sama perlu diperbarui:
Contoh di atas akan menghapus semua duplikat dan menyimpannya, mirip dengan
DISTINCT *
di SQLsumber
gunakan
groupby
danfilter
sumber
Sebenarnya, hanya baris drop 0 dan 1 yang diperlukan (setiap pengamatan yang mengandung A dan C yang cocok disimpan.):
Tapi saya menduga apa yang Anda inginkan adalah ini (satu pengamatan yang berisi A dan C yang cocok disimpan.):
Edit:
Sekarang jauh lebih jelas, oleh karena itu:
sumber
df.drop_duplicates(['A','C'])
sebagai default membuat satu pengamatan mengambil yang pertama atau terakhir seperti yang saya sebutkan dalam pertanyaan - meskipun saya baru menyadari bahwa kata kunci saya salah karena saya menulis dari memori. Yang saya inginkan adalah menghapus semua baris yang identik pada kolom minat (A dan C dalam contoh data).Cobalah berbagai hal ini
atau
atau
sumber