الباندا: كيفية مقارنة اثنين من dataframes صفًا تلو الآخر
يمكنك استخدام الطرق التالية لمقارنة اثنين من صفوف الباندا DataFrames تلو الأخرى:
الطريقة الأولى: مقارنة DataFrames والاحتفاظ بالصفوف التي تحتوي على اختلافات فقط
df_diff = df1. compare (df2, keep_equal= True , align_axis= 0 )
الطريقة الثانية: مقارنة DataFrames والاحتفاظ بجميع الصفوف
df_diff = df1. compare (df2, keep_equal= True , keep_shape= True , align_axis= 0 )
توضح الأمثلة التالية كيفية استخدام كل طريقة مع الباندا DataFrames التالية:
import pandas as pd #create first DataFrame df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D'], ' points ': [18, 22, 19, 14], ' assists ': [5, 7, 7, 9]}) print (df1) team points assists 0 to 18 5 1 B 22 7 2 C 19 7 3 D 14 9 #create second DataFrame df2 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'E'], ' points ': [18, 30, 19, 20], ' assists ': [5, 7, 7, 9]}) print (df2) team points assists 0 to 18 5 1 B 30 7 2 C 19 7 3 E 20 9
مثال 1: قارن DataFrames واحتفظ بالصفوف التي تحتوي على اختلافات فقط
يوضح التعليمة البرمجية التالية كيفية مقارنة صفي DataFrames بصف والاحتفاظ فقط بالصفوف التي تحتوي على اختلافات في عمود واحد على الأقل:
#compare DataFrames and only keep rows with differences
df_diff = df1. compare (df2, keep_equal= True , align_axis= 0 )
#view results
print (df_diff)
team points
1 coil B 22
other B 30
3 choke D 14
other E 20
يمكننا أن نرى أن DataFrames لها صفين مختلفين.
على وجه الخصوص، يمكننا أن نرى أن الصفوف الموجودة في موضعي الفهرس 1 و 3 لكل DataFrame لها قيم مختلفة في عمود واحد على الأقل.
تعرض القيم الموجودة في السطر الذاتي قيم DataFrame الأول بينما تعرض القيم الموجودة في السطر الآخر قيم DataFrame الثاني.
على سبيل المثال يمكننا أن نرى:
- يحتوي الصف الموجود في موضع الفهرس 1 في DataFrame الأول على B في عمود الفريق و 22 في عمود النقاط.
- يحتوي الصف الموجود في موضع الفهرس 1 في DataFrame الثاني على B في عمود الفريق و 30 في عمود النقاط.
ملحوظة : الوسيطة keep_equal=True تخبر الباندا بالحفاظ على القيم متساوية. وبخلاف ذلك، يتم عرض القيم المتساوية كـ NaN.
المثال 2: مقارنة DataFrames والاحتفاظ بجميع الصفوف
يوضح التعليمة البرمجية التالية كيفية استخدام الوسيطة keep_shape=True لمقارنة صفي DataFrames بصف والاحتفاظ بجميع الصفوف من DataFrames الأصلية:
#compare DataFrames and keep all rows
df_diff = df1. compare (df2, keep_equal= True , keep_shape= True , align_axis= 0 )
#view results
print (df_diff)
team points assists
0 choke A 18 5
other A 18 5
1 coil B 22 7
other B 30 7
2 choke C 19 7
other C 19 7
3 choke D 14 9
other E 20 9
يحتوي DataFrame الناتج على كافة الصفوف والأعمدة الخاصة بـ DataFrames الأصلية.
ملاحظة رقم 1 : تفترض وظيفة المقارنة () أن إطاري البيانات لهما نفس الأبعاد.
ملاحظة رقم 2: يمكنك العثور على الوثائق الكاملة لوظيفة مقارنة الباندا () هنا .
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في الباندا:
الباندا: كيفية مقارنة عمودين
الباندا: كيفية مقارنة ثلاثة أعمدة
الباندا: كيفية مقارنة الأعمدة في إطاري بيانات مختلفين