Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana Mengenalpasti Baris Hadir dalam Satu Pandas DataFrame tetapi Bukan Satu Lagi?
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!