Bagaimana cara membandingkan kolom dalam bingkai data yang berbeda?

23

Saya ingin membandingkan satu kolom df dengan df lainnya. Kolom adalah nama dan nama belakang. Saya ingin memeriksa apakah seseorang dalam satu frame data ada di frame lain.

a_a_a
sumber
Bisakah Anda menunjukkan bagaimana hasil yang Anda inginkan? Apakah itu df dengan nama yang muncul di kedua dfs, dan apakah Anda juga memerlukan hal lain seperti hitungan, atau kolom yang cocok di df2, dll. Terima kasih!
The Lyrist
Anda bisa menggabungkan dua frame data pada kolom yang Anda pedulikan dan memeriksa apakah jumlah baris dalam hasilnya positif.
dsaxton
FYI, membandingkan nama depan dan belakang pada set nama besar yang sopan akan berakhir dengan rasa sakit - banyak orang memiliki nama yang sama!
Ken Syme

Jawaban:

22

Jika Anda ingin memeriksa nilai yang sama pada kolom tertentu, misalkan Nama Anda dapat menggabungkan kedua Dataframe ke yang baru:

mergedStuff = pd.merge(df1, df2, on=['Name'], how='inner')
mergedStuff.head()

Saya pikir ini lebih efisien dan lebih cepat wherejika Anda memiliki kumpulan data besar

Tarek
sumber
1
Saya pikir kami ingin menggunakan gabungan dalam di sini dan kemudian memeriksa bentuknya.
dsaxton
10
df1.where(df1.values==df2.values).notna()

Trueentri menunjukkan elemen umum. Ini juga mengungkapkan posisi elemen umum, tidak seperti solusi dengan merge.

pcko1
sumber
apa df.jawaban anda? Hanya ada df1dan df2tetapi tidak adadf
LearneR
3

Membandingkan nilai dalam dua kolom berbeda

Dengan menggunakan set, dapatkan nilai unik di setiap kolom. Perpotongan dua set ini akan memberikan nilai unik di kedua kolom.

Contoh:

df1 = pd.DataFrame({'c1': [1, 4, 7], 'c2': [2, 5, 1], 'c3': [3, 1, 1]}) df2 = pd.DataFrame({'c4': [1, 4, 7], 'c2': [3, 5, 2], 'c3': [3, 7, 5]}) set(df1['c2']).intersection(set(df2['c2']))

Keluaran: {2, 5}


Membandingkan nama kolom dari dua dataframe

Jika Anda mencoba membandingkan nama kolom dari dua kerangka data:

Jika df1dan df2dua dataframe: set(df1.columns).intersection(set(df2.columns))

Ini akan memberikan nama kolom unik yang terkandung dalam kedua kerangka data.

Contoh:

df1 = pd.DataFrame({'c1': [1, 4, 7], 'c2': [2, 5, 1], 'c3': [3, 1, 1]})
df2 = pd.DataFrame({'c4': [1, 4, 7], 'c2': [3, 5, 2], 'c3': [3, 7, 5]})

set(df1.columns).intersection(set(df2.columns))

Keluaran: {'c2', 'c3'}

aathiraks
sumber
Saya pikir pertanyaannya adalah tentang membandingkan nilai-nilai dalam dua kolom yang berbeda dalam kerangka data yang berbeda karena orang yang ingin memeriksa memeriksa apakah seseorang dalam satu kerangka data ada di yang lain.
Divyanshu Shekhar
Terima kasih, saya salah menjawab. Saya sudah memperbarui jawabannya sekarang.
aathiraks
1

Anda dapat mengecek jumlah pasti posisi umum dan berbeda antara dua df dengan menggunakan isin dan value_counts ()

Seperti itu:

df['your_column_name'].isin(df2['your_column_name']).value_counts()

Hasil:

contoh isin

Benar = umum Salah = berbeda

Kuba S
sumber
0

Perhatikan bahwa kolom bingkai data adalah seri data. Jadi jika Anda mengambil dua kolom sebagai seri panda, Anda dapat membandingkannya seperti yang akan Anda lakukan dengan array numpy.

Timur
sumber