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
Patricia Arquetteasal
2025-01-03 10:45:44314semak imbas

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)

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

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)

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)

Ini akan mengembalikan output yang diingini:

   col1  col2 _merge
3     4    13  left_only
4     5    14  left_only
5     3    10  left_only

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!

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