الباندا: تحقق من وجود صف من dataframe في آخر


يمكنك استخدام بناء الجملة التالي لإضافة عمود جديد إلى Pandas DataFrame الذي يشير إلى ما إذا كان كل صف موجودًا في DataFrame آخر:

 #merge two DataFrames on specific columns
all_df = pd. merge (df1, df2, on=[' column1 ', ' column2 '], how=' left ', indicator=' exists ')

#drop unwanted columns
all_df = all_df. drop (' column3 ', axis= 1 )

#add column that shows if each row in one DataFrame exists in another
all_df[' exists '] = np. where (all_df. exists == ' both ', True , False )

يوضح المثال التالي كيفية استخدام بناء الجملة هذا عمليًا.

مثال: تحقق من وجود صف في أحد Pandas DataFrame في آخر

لنفترض أن لدينا إطاري بيانات الباندا التاليين:

 import pandas as pd

#create first DataFrame
df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E'], 
                    ' points ': [12, 15, 22, 29, 24]}) 

print (df1)

  team points
0 to 12
1 B 15
2 C 22
3 D 29
4 E 24

#create second DataFrame
df2 = pd. DataFrame ({' team ': ['A', 'D', 'F', 'G', 'H'],
                    ' points ': [12, 29, 15, 19, 10],
                    ' assists ': [4, 7, 7, 10, 12]})

print (df2)

  team points assists
0 to 12 4
1 D 29 7
2 F 15 7
3 G 19 10
4:10:12

يمكننا استخدام بناء الجملة التالي لإضافة عمود يسمى موجود إلى DataFrame الأول الذي يشير إلى ما إذا كانت كل قيمة في عمود الفريق والنقاط في كل صف موجودة في DataFrame الثاني:

 import numpy as np

#merge two dataFrames and add indicator column
all_df = pd. merge (df1, df2, on=[' team ', ' points '], how=' left ', indicator=' exists ')

#drop assists columns
all_df = all_df. drop (' assists ', axis= 1 )

#add column to show if each row in first DataFrame exists in second
all_df[' exists '] = np. where (all_df. exists == ' both ', True , False )

#view updated DataFrame
print (all_df)

  team points exists
0 A 12 True
1 B 15 False
2 C 22 False
3 D 29 True
4 E 24 False

يشير العمود الجديد الموجود إلى ما إذا كانت كل قيمة في عمود الفريق والنقاط في كل صف موجودة في DataFrame الثاني.

ومن النتيجة يمكننا أن نرى:

  • توجد قيمة الفريق A وقيمة النقاط 12 في DataFrame الثاني.
  • قيمة الفريق B وقيمة النقاط 15 غير موجودة في DataFrame الثاني.
  • قيمة الفريق C وقيمة النقاط 22 غير موجودة في DataFrame الثاني.
  • توجد قيمة الفريق D وقيمة النقاط 29 في DataFrame الثاني.
  • لا توجد قيمة الفريق E وقيمة النقاط 24 في DataFrame الثاني.

لاحظ أيضًا أنه يمكنك تحديد قيم أخرى غير True وFalse في العمود الموجود عن طريق تغيير القيم في وظيفة NumPy Where() .

على سبيل المثال، يمكنك بدلاً من ذلك استخدام “موجود” و”غير موجود” كما يلي:

 #add column to show if each row in first DataFrame exists in second
all_df[' exists '] = np. where (all_df. exists == ' both ', ' exists ', ' not exists ')

#view updated DataFrame
print (all_df)

  team points exists
0 to 12 exists
1 B 15 not exists
2 C 22 not exists
3 D 29 exists
4 E 24 not exists

لاحظ أنه تم تغيير القيم الموجودة في العمود الموجود .

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في الباندا:

الباندا: إضافة عمود من DataFrame إلى آخر
الباندا: احصل على صفوف غير موجودة في DataFrame آخر
الباندا: كيفية التحقق من تساوي الأعمدة المتعددة

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *