Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana Mengenalpasti Baris Hadir dalam Satu Pandas DataFrame tetapi Bukan Satu Lagi?

Bagaimana Mengenalpasti Baris Hadir dalam Satu Pandas DataFrame tetapi Bukan Satu Lagi?

Patricia Arquette
Lepaskan: 2025-01-03 10:45:44
asal
321 orang telah melayarinya

How to Identify Rows Present in One Pandas DataFrame but Not Another?

Mengenal pasti Baris Luar Biasa dalam Pandas DataFrames

Apabila bekerja dengan berbilang bingkai data, adalah perlu untuk mengenal pasti baris yang wujud dalam satu tetapi bukan yang lain. Katakan kita mempunyai dua bingkai data, df1 dan df2, dengan df2 ialah subset bagi df1.

Bagaimanakah kita boleh mengekstrak baris daripada df1 yang tidak terdapat dalam df2?

Pertimbangkan contoh berikut:

import pandas as pd

df1 = pd.DataFrame(data={'col1': [1, 2, 3, 4, 5, 3], 'col2': [10, 11, 12, 13, 14, 10]})
df2 = pd.DataFrame(data={'col1': [1, 2, 3], 'col2': [10, 11, 12]})

print("df1:")
print(df1)

print("\ndf2:")
print(df2)
Salin selepas log masuk

Output:

   col1  col2
0     1    10
1     2    11
2     3    12
3     4    13
4     5    14
5     3    10

   col1  col2
0     1    10
1     2    11
2     3    12
Salin selepas log masuk

Objektif kami adalah untuk mencari baris dalam df1 yang tidak terdapat dalam df2.

Penyelesaian:

Untuk mengenal pasti baris yang tidak lazim dengan tepat, kita perlu melakukan cantuman kiri antara df1 dan df2 pada kedua-dua lajur col1 dan col2, memastikan pendua itu dalam df2 dihapuskan. Selain itu, kami menentukan indicator=True untuk mencipta lajur tambahan yang menunjukkan sumber setiap baris yang digabungkan.

Bingkai data yang terhasil, df_all, mengandungi semua baris daripada df1 dan df2 dengan lajur tambahan _merge yang menunjukkan sama ada a baris berasal daripada kedua-dua bingkai data (kedua-duanya), hanya df1 (kiri_sahaja), atau hanya df2 (kanan_sahaja).

df_all = df1.merge(df2.drop_duplicates(), on=['col1', 'col2'], how='left', indicator=True)
Salin selepas log masuk

Kami kini boleh menapis df_all untuk mengekstrak baris yang tidak biasa daripada df1 menggunakan keadaan boolean df_all['_merge'] == 'left_only'.

df_uncommon = df_all[df_all['_merge'] == 'left_only']
print("\nUncommon rows in df1:")
print(df_uncommon)
Salin selepas log masuk

Ini akan mengembalikan output yang diingini:

   col1  col2 _merge
3     4    13  left_only
4     5    14  left_only
5     3    10  left_only
Salin selepas log masuk

Dengan memanfaatkan gabungan kiri dengan penyingkiran pendua dan lajur _merge, kami boleh mengenal pasti dan mengekstrak baris dengan berkesan daripada df1 yang tidak terdapat dalam df2.

Atas ialah kandungan terperinci Bagaimana Mengenalpasti Baris Hadir dalam Satu Pandas DataFrame tetapi Bukan Satu Lagi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan