Farklı veri çerçevelerindeki sütunları nasıl karşılaştırabilirim?


23

Bir df'nin bir sütununu diğer df'lerle karşılaştırmak istiyorum. Sütunlar adlar ve soyadlar. Bir veri çerçevesindeki bir kişinin bir diğerinde olup olmadığını kontrol etmek istiyorum.


Lütfen sonucun nasıl görünmesini istediğinizi belirtebilir misiniz? Her iki dfs'de görünen adları olan bir df ve ayrıca df2, vb. Sayma veya eşleme sütunu gibi başka bir şeye ihtiyacınız olup olmadığını da Teşekkürler!
Lyrist,


İlgilendiğiniz sütunlardaki iki veri çerçevesinin içini birleştirebilir ve sonuçtaki satır sayısının pozitif olup olmadığını kontrol edebilirsiniz.
dsaxton

Bilginize, terbiyesizce büyük bir isim setindeki ad ve soyadı karşılaştırmak acıyla sonuçlanır - birçok insan aynı isme sahiptir!
Ken Syme

Yanıtlar:


22

Belirli bir sütundaki değerlerin eşittir değerlerini kontrol etmek istiyorsanız, Ad diyelim ki her iki Veri Çerçevesini de yenisiyle birleştirebilirsiniz:

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

whereBüyük bir veri kümeniz varsa , bunun daha verimli ve hızlı olduğunu düşünüyorum.


1
Sanırım buraya iç birleştirme kullanmak istiyoruz ve sonra şeklini kontrol etmek istiyoruz.
dsaxton

10
df1.where(df1.values==df2.values).notna()

Truegirişler ortak unsurları gösterir. Bu aynı zamanda çözümün aksine ortak unsurların konumunu da ortaya koymaktadır merge.


ne df.Yanıtınızda? Sadece vardır df1ve df2ancakdf
öğrenen

3

İki farklı sütundaki değerleri karşılaştırma

Set kullanarak, her sütunda benzersiz değerler elde edin. Bu iki kümenin kesişimi, her iki sütunda da benzersiz değerler sağlayacaktır.

Örnek:

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']))

Çıktı: {2, 5}


İki veri çerçevesinin sütun adlarını karşılaştırma

İki veri karesinin sütun adlarını karşılaştırmaya çalışıyorsanız:

Eğer df1ve df2iki dataframes ise: set(df1.columns).intersection(set(df2.columns))

Bu, her iki veri çerçevesinde bulunan benzersiz sütun adlarını sağlar.

Örnek:

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))

Çıktı: {'c2', 'c3'}


Bence bu soru, farklı veri çerçevelerindeki iki farklı sütunda yer alan değerleri, bir kişinin veri çerçevesindeki bir kişinin diğer birinde olup olmadığını kontrol etmek istediği için karşılaştırması ile ilgili olduğunu düşünüyorum.
Divyanshu Shekhar

Teşekkürler, sorumu yanlış anladım. Şimdi cevabı güncelledim.
aathiraks

1

Sen kullanarak iki df arasında ortak ve farklı pozisyonların sayısını tam iki kez kontrol edebilirsiniz isin ve ) (value_counts

Bunun gibi:

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

Sonuç:

örnek isin

Doğru = ortak Yanlış = farklı


0

Veri çerçevelerinin sütunlarının veri serisi olduğunu unutmayın. Bu yüzden pandalar dizisi olarak iki sütun alırsanız, bunları tıpkı dizilerle yaptığınız gibi karşılaştırabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.